Flask应用程序需要很长时间才能响应浏览器连接重置的时间

时间:2014-07-16 08:29:47

标签: python flask

我是网络开发的新手,我已经开始学习Flask了。

我写了一个小应用程序,它从用户那里获取表单输入并将其保存在后台文本文件中,一切顺利到此为止。

在此之后,我将用户重定向到另一个链接,重定向后,应用程序运行一个系统命令,需要大约15-20秒的时间来响应。当应用程序响应时,我在浏览器上重置连接。虽然后台任务在此之后完成。

当用户被重定向到下面的代码(url)时会出现问题。连接在到达return语句之前会重置。请告诉我,在应用程序响应浏览器之前,我应该如何在浏览器和应用之间保持会话。

@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'

1 个答案:

答案 0 :(得分:2)

如果您实际上对返回系统命令的结果不感兴趣,那么我建议通过队列卸载该任务,例如,使用Flask-Celery。然后,您可以在将任务提交到队列后立即返回。如果需要,您可以向用户发送一个唯一的URL,以便他们稍后检查结果或通过电子邮件通知他们。

另一个选择是尝试加速你的命令,因为20秒超出了用户愿意等待的时间。您也不会影响用户的超时。