繁体   English   中英

使用 gunicorn 时 Flask 服务器超时 30 秒

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM