一尘不染

Flask服务器端动态更新渲染的模板?

flask

我目前有一个Flask网络服务器,该服务器使用内置的requests对象从JSON API中提取数据。

例如:

def get_data():
    response = requests.get("http://myhost/jsonapi")
    ...
    return response

@main.route("/", methods=["GET"])
def index():
    return render_template("index.html", response=response)

这里的问题是,自然地,GET方法仅在第一次调用get_data时运行一次。为了刷新数据,我必须停止并重新启动Flask wsgi服务器。我曾尝试在True / sleep循环中包装代码的各个部分,但这会阻止werkzeug加载页面。

动态地获取我想要的数据而无需重新加载页面或重新启动服务器的最Python方式是什么?


阅读 850

收藏
2020-04-06

共1个答案

一尘不染

你正在讨论什么可能是两个不同的问题。

假设问题在于你get_data()仅调用一次动态数据源,并将其(静态)值保留在global中response。不会显示此一次调用,但可以说它在代码中的某个位置。然后,如果你愿意刷新页面(/)以获取更新,则可以:

@main.route("/", methods=['GET'])
def index():
    return render_template("index.html", response=get_data())

这将在每次页面加载时获取新数据。

2020-04-06