vpu*_*utz 8 connection broken-pipe flask gunicorn
我有一个在 gunicorn 下运行的 Flask 应用程序,它通过 REST api 处理客户端请求,后端占用大量 CPU;有些请求需要几分钟才能响应。
但这会产生它自己的问题。比如说,如果我运行一个小脚本来发出一个请求并杀死它(ctrl-C 或其他任何东西),flask 应用程序会继续运行,尽管当它从计算深度返回并获取时没有人会听到它它的断管。
有没有办法在客户端连接中断后立即终止 API 调用(甚至只是杀死/重新启动工作程序)?这感觉就像 Gunicorn 可以处理的事情,但我无法找到任何可以解决问题的设置。
谢谢——这让我很烦恼!
小智 -1
可以使用以下代码杀死 Flask Worker:
from flask import request
def shutdown_server():
func = request.environ.get('werkzeug.server.shutdown')
if func is None:
raise RuntimeError('Werkzeug server doesn't run flask')
func()
@app.route('/shutdown', methods=['GET'])
def shutdown():
shutdown_server()
return 'Shutting down...'
Run Code Online (Sandbox Code Playgroud)
要杀死 Linux 上的 Gunicorn 服务器,您可以使用以下命令,我对此进行了测试:
pkill gunicorn
Run Code Online (Sandbox Code Playgroud)
该命令在各种 Linux 上都能完美运行,我假设您已经为服务器安装了 Linux
或者如果我给你一个Python实现:
import os
def shutdownGunicorn():
os.system("pkill gunicorn")
Run Code Online (Sandbox Code Playgroud)
我不认为请求完成后杀死是明智的,因为那样你就无法知道何时会收到下一个请求。
Flask 在不工作时不会占用太多 CPU 和 RAM!
希望能给您答案!
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |