Python 如何每次重新加载Flask应用程序';访问

Python 如何每次重新加载Flask应用程序';访问,python,d3.js,flask,Python,D3.js,Flask,我有一个flask应用程序,可以使用/get_data端点访问,并提供一个数字作为id(127.0.0.1:55555/get_data=56) @app.route('/get_data=')) def get_vod_树(id): ... 返回渲染模板('index.html') 它调用一个函数,该函数获取该id下的一些数据,并使用收集的数据创建一个json文件[static/data.json],然后返回render_template('index.html') 在index.html中

我有一个flask应用程序,可以使用
/get_data
端点访问,并提供一个数字作为id(
127.0.0.1:55555/get_data=56

@app.route('/get_data='))
def get_vod_树(id):
...
返回渲染模板('index.html')
它调用一个函数,该函数获取该id下的一些数据,并使用收集的数据创建一个json文件[static/data.json],然后返回render_template('index.html')

在index.html中有一个对../static/data_tree.js的调用,该调用依次读取json文件并使用d3.js在浏览器中输出可视化

当应用程序运行时,即使使用不同的id和json文件更改,我也会在浏览器上获得相同的输出。只有当我重新加载应用程序并访问url时,它才会起作用

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

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

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

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

示例代码:

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)

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

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

示例代码:

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)

谢谢你的回答。这有助于弄清真相。它现在是这样工作的:

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

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

谢谢您的回答。这有助于弄清真相。它现在是这样工作的:

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

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

您如何将数据导入index.html?我不理解您的过程。为什么每次都要覆盖一个文件,而不是保留所有data.json并将
id
传递给模板?我能看到的唯一原因是,数据可以在连续调用之间更改,但为什么不直接将其传递到模板?@polku是的,数据会更改,但它也是使用python函数收集的,该函数可以格式化获取的json数据。您如何将数据获取到index.html?我不理解您的过程。为什么每次都要覆盖一个文件,而不是保留所有data.json并将
id
传递给模板?我能看到的唯一原因是,数据可以在连续调用之间更改,但为什么不直接将其传递到模板?@polku是的,数据会更改,但它也是使用python函数收集的,该函数格式化获取的json数据。不过,静态文件中不包括更改。看起来有些缓存机制已经到位。@case您如何调用服务器?我在浏览器中使用,数据是从测试服务器上的URL获取的。但静态文件中不包括更改。看起来有些缓存机制已经就位。@case您如何调用服务器?我在浏览器中使用,数据是从测试服务器上的URL获取的。