我有以下文件夹结构
git_repo_main
└───my_sub_project
│ celery_app.py
│ __init__.py
│
├───calcs
│ │ math_funcs.py -> from my_sub_project.celery_app import app
│ │ __init__.py
│
├───piplines
│ run_math_pipeline.py -> from my_sub_project.calcs import math_funcs
│ __init__.py
celery_app.py
看起来像这样:
from celery import Celery
app = Celery('my_sub_project',
broker='amqp://guest@localhost//',
backend='amqp://guest@localhost//',
include=['calculations.math_funcs']
)
我的仓库里也有代码
使用此命令运行芹菜时:celery -A celery_app worker -l info -P gevent
,我收到以下错误
ModuleNotFoundError: No module named 'my_sub_project'
用于app
导入的完整错误堆栈
解决方案是什么?
我已经阅读了命名和导入的文档,但是更改了 包含git_repo_main
的导入会产生相同的错误,而且它是我的源根目录,因此它与大多数 IDE 的默认导入结构相反。
我也发现了一个类似的问题,但它似乎解决了任务发现的问题,而不是app
和任务导入的问题。
注意:我没有使用 django
在指定 PYTHONPATH 的git_repo_main
目录中运行 Celery worker。像这样:PYTHONPATH=. celery -A celery_app.app worker -l info -P gevent