将应用程序级别设置注入 Django 中的项目级别设置
Injecting app level setting into project level setting in Django
我正在尝试为 celery beat 设置一个 cron 作业,但我不想将计划信息放在项目级别 settings.py
,有没有办法将应用程序级别的设置注入项目级别设置它可以很好地与整个项目一起使用?
celery_config.py
在 celery_task app
CELERYBEAT_SCHEDULE = {
'name_of_job': {
'task': 'task.add',
'schedule': timedelta(seconds=5),
'args': (16, 0)
},
}
settings.py
INSTALLED_APPS = (
'djcelery',
'celery_task'
)
第一个选项是通过 Celery 命令行参数指定配置文件的位置 --config
第二个选项是做一些类似于我在需要 environment/deployment 特定设置时所做的事情:
在您的 settings.py 文件底部添加一个部分,该部分从您的应用程序中导入设置,这些设置包含在 try 语句中,以避免在应用程序设置文件不可用时破坏站点。
示例:
/* bottom of settings.py */
try:
from celery_app.celery_config import *
except:
print 'Did not find celery_config'
这将尝试从您的应用程序加载设置文件,但如果该应用程序不在项目文件夹中,将避免任何错误。
重要:仅使用与芹菜相关的唯一配置变量,因为这将覆盖您的 settings.py 文件
中任何先前定义的设置
我正在尝试为 celery beat 设置一个 cron 作业,但我不想将计划信息放在项目级别 settings.py
,有没有办法将应用程序级别的设置注入项目级别设置它可以很好地与整个项目一起使用?
celery_config.py
在 celery_task app
CELERYBEAT_SCHEDULE = {
'name_of_job': {
'task': 'task.add',
'schedule': timedelta(seconds=5),
'args': (16, 0)
},
}
settings.py
INSTALLED_APPS = (
'djcelery',
'celery_task'
)
第一个选项是通过 Celery 命令行参数指定配置文件的位置 --config
第二个选项是做一些类似于我在需要 environment/deployment 特定设置时所做的事情:
在您的 settings.py 文件底部添加一个部分,该部分从您的应用程序中导入设置,这些设置包含在 try 语句中,以避免在应用程序设置文件不可用时破坏站点。
示例:
/* bottom of settings.py */
try:
from celery_app.celery_config import *
except:
print 'Did not find celery_config'
这将尝试从您的应用程序加载设置文件,但如果该应用程序不在项目文件夹中,将避免任何错误。
重要:仅使用与芹菜相关的唯一配置变量,因为这将覆盖您的 settings.py 文件
中任何先前定义的设置