gpt4 book ai didi

python - gunicorn Flask 应用程序在 Docker 中挂起

转载 作者:行者123 更新时间:2023-12-04 11:33:22 25 4
gpt4 key购买 nike

我有一个 Flask我运行的应用程序 gunicorn (在装有 Ubuntu 20.04 的 Dell latitude 5410 笔记本电脑上),我配置了 Docker按照 this wonderful guide 中的建议运行它.
这是我的 boot.sh :

#!/bin/sh
source venv/bin/activate
while true; do
flask db init
flask db migrate
flask db upgrade
if [[ "$?" == "0" ]]; then
break
fi
echo Deploy command failed, retrying in 5 secs...
sleep 5
done
exec gunicorn -b 0.0.0.0:5000 --access-logfile - --error-logfile - main:app
Dockerfile只需将其称为入口点:
FROM python:3.8-alpine

RUN adduser -D diagnosticator

RUN apk add --no-cache bash mariadb-dev mariadb-client python3-dev build-base libffi-dev openssl-dev

WORKDIR /home/diagnosticator

COPY requirements.txt requirements.txt
RUN python -m venv venv
RUN venv/bin/pip install -U pip
RUN venv/bin/pip install wheel
RUN venv/bin/pip install -r requirements.txt
RUN venv/bin/pip install gunicorn pymysql

COPY app app
COPY upload upload
COPY variant_dependencies variant_dependencies
COPY main.py config.py boot.sh ./
COPY convert_VCF_REDIS.py asilo_variant_functions.py cloud_bigtable_functions.py mongodb_functions.py redis_functions.py ./
COPY docker_functions.py ./
RUN chmod a+x boot.sh

ENV FLASK_APP main.py

RUN chown -R diagnosticator:diagnosticator ./
USER diagnosticator

EXPOSE 5000
ENTRYPOINT ["./boot.sh"]
我在 docker-network 中运行 Docker和:
docker network create --driver bridge diagnosticator-net
我注意到的问题是 Docker 容器由于某种原因在使用 gunicorn 一段时间不活动后挂起。错误:

[CRITICAL] WORKER TIMEOUT


这里的 docker 日志:
192.168.32.1 - - [12/Jun/2021:12:28:30 +0000] "GET /patient_page/GHARIgANY21uuITW2196372 HTTP/1.1" 200 19198 "http://127.0.0.1:3000/patient_result" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
[2021-06-12 12:29:10 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:16)
[2021-06-12 12:29:10 +0000] [16] [INFO] Worker exiting (pid: 16)
[2021-06-12 12:29:10 +0000] [17] [INFO] Booting worker with pid: 17
[2021-06-12 12:29:10,905] INFO in __init__: Diagnosticator-local startup
[2021-06-12 12:29:41 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:17)
20
[2021-06-12 12:29:41 +0000] [17] [INFO] Worker exiting (pid: 17)
[2021-06-12 12:29:41 +0000] [18] [INFO] Booting worker with pid: 18
[2021-06-12 12:29:42,094] INFO in __init__: Diagnosticator-local startup
[2021-06-12 12:30:12 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:18)
[2021-06-12 12:30:12 +0000] [18] [INFO] Worker exiting (pid: 18)
并且该应用程序只是永远挂起加载您尝试访问的任何页面。
我在这里看到了一些建议并在谷歌上搜索它,比如 this onethis one , 建议在 gunicorn --timeout 上工作但无论我放什么,问题都会不断发生。
任何帮助将不胜感激,因为我无法找出任何真正的解决方案!

最佳答案

尝试使用 --log-level 运行 Gunicorn调试...它应该给出一些关于错误的痕迹。
另外,您可以尝试添加 --worker-class在你的枪炮命令中

关于python - gunicorn Flask 应用程序在 Docker 中挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67949014/

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