如何在每次访问时重新加载Flask应用程序

时间:2016-07-22 09:48:04

标签: python d3.js flask

我有一个烧瓶应用,可以使用listViewInit()端点访问并提供一个数字作为ID(/get_data

127.0.0.1:55555/get_data=56

它调用一个函数,该函数在该id下获取一些数据并使用收集的数据创建一个json文件[static / data.json],然后返回render_template(' index.html')。

在index.html中调用../static/data_tree.js,然后使用d3.js读取json文件并在浏览器中输出可视化。

当应用程序运行时,即使我使用不同的ID并且json文件发生更改,我也会在浏览器上获得相同的输出。它只适用于我重新加载应用程序然后访问网址。

我的问题是: 如何确保多个用户根据id获取不同的输出,或者当我点击端点时如何重新加载应用程序。

事后考虑:如果多个用户正在使用该应用,则每次只创建一个文件

2 个答案:

答案 0 :(得分:3)

感谢您的回答。它有助于深入了解这一点。它现在可以这样工作:

@app.after_request
def apply_caching(response):
    response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate'
    return response

因此,通过禁用缓存,应用程序可以将每个请求视为唯一。

答案 1 :(得分:0)

如果您在测试/开发环境中设置app.run(debug=True),则每次代码更改时它都会自动重新加载Flask应用。

要在静态文件更改时重新加载应用程序,请使用extra_files参数。请参阅here

示例代码:

extra_dirs = ['directory/to/watch',]
extra_files = extra_dirs[:]
for extra_dir in extra_dirs:
    for dirname, dirs, files in os.walk(extra_dir):
        for filename in files:
            filename = path.join(dirname, filename)
            if path.isfile(filename):
                extra_files.append(filename)
app.run(extra_files=extra_files)

Source