解決方案是使用環境變量。
在celery.py
代替
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
使用
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{0}'.format(get_env_setting('DJANGO_SETTINGS_MODULE')))
隨着get_env_setting
定義爲:
from os import environ
from django.core.exceptions import ImproperlyConfigured
# https://github.com/twoscoops/django-twoscoops-project/blob/develop/project_name/project_name/settings/production.py#L14-L21
def get_env_setting(setting):
""" Get the environment setting or return exception """
try:
return environ[setting]
except KeyError:
error_msg = "Set the %s env variable" % setting
raise ImproperlyConfigured(error_msg)
你可以把在你的settings.base.py
例如。
然後設置DJANGO_SETTINGS_MODULE
環境變量的每個環境。例如。在生產環境中將其設置爲my_project.settings.production
。此變量可以通過添加下面的行由永久設置爲〜/ .bashrc中:
export DJANGO_SETTINGS_MODULE=my_project.settings.production
您是否閱讀過Django入門?自從django-芹菜被使用以來,它已經發生了變化。 http://celery.readthedocs.org/en/latest/django/first-steps-with-django.html – olofom
@oloform:是的,文檔只解釋如何設置,當你有一個設置文件。 – Bentley4