Running Gunicorn Flask app in Docker [CRITICAL] WORKER TIMEOUT when starting up
我想在Docker中使用gunicorn运行Flask Web服务应用程序。 启动后,该应用会加载大型机器学习模型。
但是,当我在Docker中运行gunicorn时,我收到了以下超时信息,并且它一直在催生工人。
1 2 3 4 5 6 7 8 9 10 11 12 | [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中将其作为flask应用程序运行,或者在命令行中使用(或不使用)gunicorn运行flask应用程序都可以正常工作。 如果我删除了机器学习模型,它也适用于gunicorn。
例如:
1 2 3 4 5 | $python app.py $gunicorn -b 0.0.0.0:8080 --workers=2 --threads=4 app:app $gunicorn app:app |
这是我与Flask开发服务器一起使用的Dockerfile。 工作正常。
1 2 3 4 | ADD . /app WORKDIR /app RUN pip install -r requirements.txt CMD python app.py |
如果我按照以下方式经营枪械,那将继续催生工人:
1 2 3 | 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库重写了该应用程序,并收到了相同的结果!
任何指导表示赞赏。
谢谢,
周杰伦
我需要添加gunicorn --timeout,如下所示:
1 | CMD gunicorn --timeout 1000 --workers 1 --threads 4 --log-level debug --bind 0.0.0.0:8000 app:app |
我还遇到了在Google Cloud Platform上部署的问题。 日志仅显示一条终止消息。 在计算实例中增加内存可以解决该问题。