可能由三种原因:
第一种,这个属于启动路径问题,celery需要在该工程的上级目录下启动(也就时celery模块外启动),如图
第二种:定义子任务模块时命名不为tasks.py,但是在启动函数种却使用了注册,如celery的include参数。正确的如下图
第三种:这种情况也是比较坑的,celery命令行启动时导包需要整个工程的全路径,在该工程中任何地方都要使用全路径导包,我觉得时celery官方导包这块没做好的原因。如图,我需要导入在tasks中导入celery的Celery类,注册任务,需要按照下面导入
from celery_project.celery_client import cel
而不能 from ..celery_client import cel
即使目录为,很明显tasks相对导包就可以找到celery_client,但是命令行运行还会报错
以上就是我使用celery时遇到的问题,这一块说起来和python导包机制有关系,麻烦大家点个关注,有机会了会出python导包机制文章,希望我的分享能帮助到大家