我正试图为芹菜beat设置cron作业,但我不想将时间表信息放在项目级别settings.py
中,是否有办法将应用程序级别设置注入项目级别设置,使其与整个项目配合良好?
celery_task app
中的celery_config.py
CELERYBEAT_SCHEDULE = {
'name_of_job': {
'task': 'task.add',
'schedule': timedelta(seconds=5),
'args': (16, 0)
},
}
settings.py
INSTALLED_APPS = (
'djcelery',
'celery_task'
)
第一个选项是通过芹菜命令行参数——config
指定配置文件的位置第二个选项是做类似的事情,当我需要有特定于环境/部署的设置:
在settings.py文件的底部包含一个部分,该部分将从应用程序中导入设置,并封装在try语句中,以避免在应用程序设置文件不可用时破坏站点。
的例子:
/* bottom of settings.py */
try:
from celery_app.celery_config import *
except:
print 'Did not find celery_config'
这将尝试从应用程序中加载设置文件,但如果应用程序不在项目文件夹中,则会避免任何错误。
重要:仅使用唯一的芹菜相关配置变量,因为这将覆盖之前在settings.py文件