![](/img/trans.png)
[英]Docker: Running a Flask app via Gunicorn - Worker timeouts? Poor performance?
[英]Flask server timeouts at 30 sec with gunicorn
这是代码的最小示例。 curl 请求curl http://127.0.0.1:5000/get_zip/my_zip.zip -o my_zip.zip
应该向用户发送文件archive/my_zip.zip
它在没有gunicorn
的情况下正常工作,并在 30 秒后断开连接,当服务器使用gunicorn
启动时。
from os import path
from flask import Flask, request, jsonify, json, send_file
app = Flask(__name__)
@app.route('/get_zip/<file_path>', methods=['GET'])
def get_zip(file_path): # file_path: path to a large zip file
return send_file(path.join('archive', file_path), as_attachment=True)
if __name__ == '__main__':
app.run(host="0.0.0.0", port="5000", debug=False, use_reloader=False)
在 gunicorn 下运行时修复此断开连接的正确方法是什么?
30 秒是 gunicorn 的默认timeout
值。
要增加它,请在您的 gunicorn 配置中使用--timeout <seconds>
参数。
此外,如果您在 nginx 下运行 gunicorn,请不要忘记管理 nginx 的设置:
proxy_connect_timeout <seconds>s;
proxy_read_timeout <seconds>s;
更新:
使用send_from_directory从 flask 发送文件更好更安全
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.