python - Flask 应用程序需要很长时间才能响应,此时浏览器连接会被重置

标签 python flask

我是 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/

相关文章:

python - 在 flask 应用程序中保留全局状态

python - 使用 Flask 流式传输视频文件

python - 类型错误 : 'bool' object is not callable g. user.is_authenticated()

python - 需要帮助确定为什么我的 Theano 脚本无法运行

python - 如何在独立显卡 AMD GPU 上运行 Python 脚本?

python - 使用 ctypes 加载 .dll

python - 使用 Python 对图像进行 FFT

python - 关于torch.nn.DataParallel的问题

web-services - 如何使用 FastAPI 作为 RabbitMQ (RPC) 的消费者

python - 如何在本地运行 Postgres