在Django中,将应用级别设置注入到项目级别设置中



我正试图为芹菜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文件

中定义的任何设置。

最新更新