gpt4 book ai didi

python - 由 gunicorn 运行的 Flask 应用程序在一段时间后被挂起

转载 作者:行者123 更新时间:2023-12-04 13:41:30 25 4
gpt4 key购买 nike

我面临过去 30 天以来的一个独特问题。在尝试了很多东西之后,我正在寻求社区的支持。

我使用 python Flask 制作了一个基于深度学习的 Web 应用程序。后端使用 Python(深度学习代码)编写,前端使用 HTML、JS 和 Bootstrap 提供服务。部署是使用 Gunicorn 完成的。此外,该应用程序启用了 https 并部署在 GCP 上。

应用程序可以正常运行一段时间,然后挂起。尽管 python 进程仍在运行,但它停止为任何 API 请求提供服务和响应。新命中不会到达 python 代码。这种行为在运行时间方面是非常随机的。有时需要 4-5 小时才能停止,有时甚至需要 2 天才能停止。然后我使用 gunicorn 命令手动启动应用程序,它可以工作。

我尝试过的事情 -

  • 使用 htop 检查系统内存当应用程序处于挂起阶段时。但似乎还好。
  • 我尝试使用 Jmeter 测试 API(按顺序在循环中点击多个请求)并且系统没有挂断。
  • 我什至使用 uwsgi + apache 运行该应用程序,但问题仍然存在。

  • 这是用于运行 gunicorn 服务器的命令 -
    gunicorn -b 0.0.0.0:443 --threads=4 --certfile=path_to_certificate_file --keyfile=path_to_key_file server:app --max-requests 1000 --access-logfile /var/log/gunicorn/gunicorn-access.log --error-logfile /var/log/gunicorn/gunicorn-error.log --capture-output --log-level debug --logger-class=simple --daemon

    我仍然无法诊断确切的问题并复制它。寻找任何特定的方向来探索。随意分享您的假设/想法。让我知道是否需要我方提供任何其他信息以使其更直观。

    最佳答案

    我在使用 gunicorn/flask 应用程序时也遇到过这个问题:
    请求仅在 gunicorn 启动后的前几分钟内加载。单独放置几分钟后,gunicorn 停止响应请求(浏览器永久显示“加载”图标动画)。 Gunicorn 错误日志什么也没显示。
    我目前的解决方法是从客户端 html 文件创建对 flask 应用程序的任意“保持事件”调用。
    所以在 Flask 应用程序文件中:

    @app.route('/keep_alive/<val>')
    def keep_alive(val):
    return json.dumps({'success':val})
    在 html 的 JS 块中:
    function keepAlive() {
    var t = setTimeout(keepAlive, 60000);
    var d = new Date();
    var n = d.getTime();
    $.getJSON(base_url + '/keep_alive/' + n.toString(), function (data) {
    console.log('keep alive return ' + data)
    });
    }
    keepAlive();
    值得一提的是,gunicorn 设置 --keep-alive=21600 没有任何明显的效果。如果这里有人能启发我,那就太好了。
    谢谢

    关于python - 由 gunicorn 运行的 Flask 应用程序在一段时间后被挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56474693/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com