docker使用tiangolo/uvicorn-gunicorn-fastapi镜像启动python服务端环境,启动配置放在配置文件gunicorn.conf.py中,在使用docker启动容器的时候失败,用logs -f查看报错原因,但只看到如下提示:本文地址:http://www.04007.cn/article/988.html,未经许可,不得转载.
File "/home/charleswu/AiDoctor/process_bchao/app.py", line 44, in <module> app = create_application() File "/home/charleswu/AiDoctor/process_bchao/app.py", line 31, in create_application from webapi import image_api File "/home/charleswu/AiDoctor/process_bchao/webapi/__init__.py", line 3, in <module> from .upload_image import image_api File "/home/charleswu/AiDoctor/process_bchao/webapi/upload_image.py", line 9, in <module> from interface import get_b_result File "/home/charleswu/AiDoctor/process_bchao/interface.py", line 6, in <module> from structuration import Struct File "/home/charleswu/AiDoctor/process_bchao/structuration.py", line 7, in <module> During handling of the above exception, another exception occurred: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>本文地址:http://www.04007.cn/article/988.html,未经许可,不得转载.
而这样的报错信息无从下手,一般来说其它方面比如端口配置(docker启动命令中的端口和gunicorn.conf.py中没有对应,可尝试只配一个地方,我没试)没有问题的话,python环境tiangolo/uvicorn-gunicorn-fastapi镜像启动失败的常见问题就是缺少某些模块导致的。但上面的报错显然让我们束手无策,这时可以这样处理。本文地址:http://www.04007.cn/article/988.html,未经许可,不得转载.
参数:preload, preload默认为False, 为True的情况下,会将辅助线程或者进程开在master里,从而可以直接将报错信息列出来。因此可以在命令行或者配置文件中增加此配置:
#1.gunicorn命令时在后边加上参数 –preload
#2.在配置文件gunicorn.conf.py中添加: preload_app = True本文地址:http://www.04007.cn/article/988.html,未经许可,不得转载.
修改重启后便便可看到详细的报错信息,示例如下:
from redis import redis, publish as redis
ModuleNotFoundError: No module named 'redis'本文地址:http://www.04007.cn/article/988.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/988.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |