Django配置CELERY_BEAT_SCHEDULER遇ModuleNotFoundError求助
Django Celery Beat 模块找不到问题解决
1. 修正调度器配置的模块名
Python模块名不支持连字符,django-celery-beat是pip安装的包名,但实际导入的模块名是下划线形式的django_celery_beat。把settings.py里的调度器配置改成:
CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler"
这是最可能触发ModuleNotFoundError的原因。
2. 确认虚拟环境与依赖安装
- 先激活项目对应的虚拟环境:
- Linux/mac:
source venv/bin/activate - Windows:
venv\Scripts\activate
- Linux/mac:
- 重新安装依赖:
pip install django-celery-beat - 执行
pip list,确认输出里有django-celery-beat包。
3. 用虚拟环境内的Celery命令启动
如果全局和虚拟环境都装了Celery,容易调用到没装依赖的全局命令。直接用虚拟环境内的Celery绝对路径启动:
- Linux/mac:
venv/bin/celery -A config beat -l INFO - Windows:
venv\Scripts\celery.exe -A config beat -l INFO
4. 检查Celery初始化配置
确保项目的celery.py(通常在根目录或config文件夹下)正确加载了Django环境:
import os from celery import Celery # 指定Django配置文件 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings') app = Celery('config') # 从Django settings读取Celery配置(前缀为CELERY_) app.config_from_object('django.conf:settings', namespace='CELERY') # 自动发现所有app中的tasks文件 app.autodiscover_tasks()
5. 执行数据库迁移
配置django_celery_beat后,需要创建相关数据表:
python manage.py migrate django_celery_beat
完成以上步骤后,重新启动Celery Beat即可。
内容的提问来源于stack exchange,提问作者Сергей Киселёв
相关产品推荐
相关产品推荐

