我是 Web 开发新手,我已经开始学习 Flask。
我编写了一个小应用程序,它接受用户的表单输入并将其保存在后台文本文件中,直到这里一切都很顺利。
此后,我将用户重定向到另一个链接,重定向后应用程序运行一个系统命令,该命令大约需要 15-20 秒才能响应。当应用程序响应时,我的浏览器上的连接已重置。尽管后台任务在那之后完成。
当用户重定向到以下代码(url)时,就会出现此问题。连接在到达 return 语句之前被重置。请让我知道我应该如何保持浏览器和应用程序之间的 session ,直到应用程序响应浏览器。
@app.route('/running', methods=['GET'])
def running():
os.system('echo $(date +[%Y/%m/%d_%H:%M:%S]) >> /root/Tas/logs/SN_up_$(date +"%Y-%m-%d").log && /root/Tas/scripts/SN_upgrade.py &>> /root/Tas/logs/SN_up_$(date +"%Y-%m-%d").log')
return 'Data processed'
最佳答案
如果您实际上对返回系统命令的结果不感兴趣,那么我建议通过队列卸载该任务,例如使用 Flask-Celery。您可以将任务提交到队列后立即返回。如果需要,您可以向用户发送一个唯一的 URL,他们可以稍后在其中检查结果或通过电子邮件通知他们。
另一个选择是尝试加快命令速度,因为 20 秒远远超出了用户愿意等待的时间。您也无法影响用户的超时。
关于python - Flask 应用程序需要很长时间才能响应,此时浏览器连接会被重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24775864/