Python 2.7 Python Flask应用程序-文件可以使用';从"目录"发送"x27;但是更新的文件内容不会显示在客户端
使用python flask开发了一个web应用程序,它具有以下功能:Python 2.7 Python Flask应用程序-文件可以使用';从"目录"发送"x27;但是更新的文件内容不会显示在客户端,python-2.7,flask,Python 2.7,Flask,使用python flask开发了一个web应用程序,它具有以下功能: 用户可以输入输入 收到输入后,flask app将执行以下任务:, -登录到VM并执行任务。使用paramiko模块将SSH连接到远程计算机。 -然后将捕获的结果保存到主机中的文本文件中。 -然后使用send_from_directory()将文件发送到客户端 在客户端,用户可以查看输入表单,一旦用户单击generate按钮,flask app就可以执行任务,输出文本文件可以发送到客户端。这里的问题,在客户端看起来像是发生了
53 #View the results captures.
54 @app.route("/view")
55 def view():
56 return render_template("view.html")
57
58 #Download file.
59 @app.route('/static/<path:filename>/',methods=['GET','POST'])
60 def download_file (filename):
61 try:
62 return send_from_directory
(directory=static,filename=filename)
63
64 except Exception as e:
65 return str(e)
53#查看结果捕获。
54@app.route(“/视图”)
55 def view():
56返回渲染模板(“view.html”)
57
58#下载文件。
59@app.route('/static/',methods=['GET','POST'])
60 def下载_文件(文件名):
61尝试:
62从目录返回发送目录
(目录=静态,文件名=文件名)
63
64例外情况除外,如e:
65返回街(e)
view.html
1 <!doctype html>
2 <html>
3 <body>
4 {% with messages = get_flashed_messages() %}
5 {% if messages %}
6 <ul>
7 {% for message in messages %}
8 <li>{{ message }}</li>
9 {% endfor %}
10 </ul>
11 {% endif %}
12 {% endwith %}
13
14 <h1>Your result is ready.</h1>
15 <a href = "/static/bt_output.txt" target="_blank"><button
class='btn btn-default'>View Result!</button></a>
16
17 <!-- <p>Do you want to <a href = "{{ url_for('main') }}">
18 <b>View Result</b></a></p>-->
19
20
21 </body>
22 </html>
23
1
2.
3.
4{%with messages=get_flashed_messages()%}
5{%if消息%}
6
7{消息%中消息的百分比}
8- {{message}
9{%endfor%}
10
11{%endif%}
12{%endwith%}
13
你的结果已经准备好了。
15
16
17
19
20
21
22
23
更新,另一种方法。。。
向Jinja添加时间戳函数(例如在init.py中):
并将您的HTML更改为:
<a href="/static/bt_output.txt?time={{ timestamp() }}" target="_blank">
<button class='btn btn-default'>View Result!</button>
</a>
原始答案
您可以使用对任何缓存控制头进行特定于文件/路由的更改,否则应查看服务器设置以获取默认值
@app.route('/static/<path:filename>/',methods=['GET','POST'])
def download_file (filename):
try:
response = send_from_directory(directory=static,
filename=filename)
response.cache_control.max_age = 60 # e.g. 1 minute
return response
except Exception as e:
return str(e)
@app.route('/static/',方法=['GET','POST'])
def下载文件(文件名):
尝试:
响应=从目录发送目录(目录=静态,
文件名=文件名)
response.cache_control.max_age=60#例如1分钟
返回响应
例外情况除外,如e:
返回str(e)
您还应该查看
SEND\u FILE\u MAX\u AGE\u DEFAULT
谢谢您的建议。但是问题仍然没有恢复,我添加了类似response.headers['Cache-Control']=“没有缓存,没有存储,必须重新验证”
和response.Cache\u Control.max\u age=0
,response.Cache\u Control.public=True
。当我们第一次运行应用程序时,输出文件内容正确地显示在客户端,但我们再次给出不同的输入,结果文本文件仍然显示上次运行的内容,在服务器端,我们可以看到输出文本文件正确地更新了,但是从客户端,这一变化不受影响。非常感谢您的支持。
@app.route('/static/<path:filename>/',methods=['GET','POST'])
def download_file (filename):
try:
response = send_from_directory(directory=static,
filename=filename)
response.cache_control.max_age = 60 # e.g. 1 minute
return response
except Exception as e:
return str(e)