【问题标题】:Running Gunicorn Flask app in Docker [CRITICAL] WORKER TIMEOUT when starting up启动时在 Docker [CRITICAL] WORKER TIMEOUT 中运行 Gunicorn Flask 应用程序
【发布时间】:2020-03-29 15:59:56
【问题描述】:

我想在 Docker 中使用 gunicorn 运行 Flask Web 服务应用程序。启动时,应用程序会加载一个大型机器学习模型。

但是,当我在 Docker 中运行 gunicorn 时,我收到了以下超时,并且它只是不断产生工人。

[2019-12-12 21:52:42 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:1198) 
[2019-12-12 21:52:42 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:1204)
[2019-12-12 21:52:42 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:1210)
[2019-12-12 21:52:42 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:1211)
[2019-12-12 21:52:42 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:1222)
[2019-12-12 21:52:42 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:1223)
[2019-12-12 21:52:42 +0000] [1264] [INFO] Booting worker with pid: 1264
[2019-12-12 21:52:42 +0000] [1265] [INFO] Booting worker with pid: 1265
[2019-12-12 21:52:42 +0000] [1276] [INFO] Booting worker with pid: 1276
[2019-12-12 21:52:42 +0000] [1277] [INFO] Booting worker with pid: 1277
[2019-12-12 21:52:42 +0000] [1278] [INFO] Booting worker with pid: 1278
[2019-12-12 21:52:42 +0000] [1289] [INFO] Booting worker with pid: 1289

在 Docker 中将其作为烧瓶应用程序运行,或从命令行使用(或不使用)gunicorn 运行烧瓶应用程序都可以正常工作。如果我删除机器学习模型,它也适用于 gunicorn。

例如:

$python app.py

$gunicorn -b 0.0.0.0:8080 --workers=2 --threads=4 app:app

$gunicorn app:app

这是我使用 Flask 开发服务器的 Dockerfile。工作正常。

ADD . /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD python app.py

如果我按如下方式运行 gunicorn,它只会不断生成工人:

CMD gunicorn -b 0.0.0.0:8080 --workers=2 --threads=4 app:app
or
CMD ["gunicorn", "app:app"]

gunicorn 有一个 --timeout=30 参数。默认为 30 秒,我将其增加到 300。这似乎没有影响。

注意:我为 Starlette 库重写了应用程序并收到了相同的结果!

感谢任何指导。

谢谢, 周杰伦

【问题讨论】:

    标签: docker flask gunicorn


    【解决方案1】:

    我需要添加 gunicorn --timeout 如下:

    CMD gunicorn --timeout 1000 --workers 1 --threads 4 --log-level debug --bind 0.0.0.0:8000 app:app
    

    我在 Google Cloud Platform 上部署时也遇到了问题。日志只显示了一条终止消息。增加计算实例中的内存解决了这个问题。

    【讨论】:

      【解决方案2】:

      试试这个 CMD["gunicorn", "--timeout", "1000", "--workers=1","-b", "0.0.0.0:8000","--log-level", "debug", "manage"]

      【讨论】:

        猜你喜欢
        • 2018-04-23
        • 2020-01-07
        • 2022-01-18
        • 2021-08-29
        • 1970-01-01
        • 2021-03-07
        • 2022-01-15
        • 1970-01-01
        • 2012-02-15
        相关资源
        最近更新 更多