Supervisord部署Django Channels运行Daphne报No module named 'project'错误
问题解决方案
该报错是Django启动时尝试读取名为project的模块作为配置来源失败导致的,通常由配置路径不匹配、环境变量错误或执行环境不正确导致,可按以下步骤排查修复:
- 步骤1:检查asgi.py配置
打开项目路径下的/home/jaga/C42/mysite/asgi.py文件,确认DJANGO_SETTINGS_MODULE的配置是否正确,可对照同目录下manage.py中的配置,确保两处值一致,示例正确配置如下:import os from django.core.asgi import get_asgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings') # 此处不要保留模板默认的project.settings写法,要和你的实际项目名匹配 application = get_asgi_application() - 步骤2:补全虚拟环境路径(若使用虚拟环境)
若你的项目使用了独立虚拟环境,需要将Supervisor配置中command字段的daphne替换为虚拟环境内daphne的绝对路径,例如虚拟环境存放在/home/jaga/venv路径下,修改后的command字段为:command=/home/jaga/venv/bin/daphne -u /run/daphne/daphne%(process_num)d.sock --fd 0 --access-log - --proxy-headers mysite.asgi:application - 步骤3:强制指定配置环境变量
可以在Supervisor配置块中手动添加环境变量,强制指定Django读取的配置模块,在你的配置文件中新增一行:environment=DJANGO_SETTINGS_MODULE="mysite.settings" - 步骤4:验证目录权限
确认/run/daphne目录存在,且运行Supervisord服务的用户对该目录有读写权限,不存在则手动创建:sudo mkdir /run/daphne sudo chown 你的运行用户:你的运行用户组 /run/daphne - 步骤5:重启Supervisor进程生效
修改完成后执行以下命令加载配置并重启服务:sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl restart django-c42
内容的提问来源于stack exchange,提问作者user14475872
相关产品推荐
相关产品推荐

