【问题标题】:Celery 3.1.9 Django integration, specifying settings file, without using djceleryCelery 3.1.9 Django集成,指定设置文件,不使用djcelery
【发布时间】:2014-03-18 20:41:15
【问题描述】:

我今天开始在 Django 中使用 celery 3.1.9。这个较新的版本与 django 有更紧密的集成,无需使用 django-celery。

我使用多个设置文件,我想知道在初始化celery worker 时是否有一种简单的方法来指定要使用的设置文件?

使用 djcelery 非常简单,因为它使用 manage.py 命令。

我天真地试图检查是否

settings.DEBUG 在 celery.py 文件中为 true,但当然失败了,因为尚未加载设置!

下一步是深入研究 django-celery 源代码并模仿他们正在做的事情,但在此之前,我希望有人找到了实现这一目标的简单方法?

谢谢

【问题讨论】:

  • 你读过 Django 入门吗?自从使用 django-celery 以来,它已经发生了变化。 celery.readthedocs.org/en/latest/django/…
  • @oloform:是的,文档只解释了当你有一个设置文件时如何设置。

标签: django celery


【解决方案1】:

解决方案是使用环境变量。

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.core.exceptions.ImproperlyConfigured: Set the DJANGO_SETTINGS_MODULE env variable
  • 似乎您没有设置 DJANGO_SETTINGS_MODULE 环境变量(指向您的设置模块)。此外,这只是一个实现的想法,这个想法是关于使用环境变量来决定要加载的设置模块。
【解决方案2】:

在命令行初始化 celery worker 时,只需在 celery 命令之前设置环境变量即可。

DJANGO_SETTINGS_MODULE='proj.settings' celery -A proj worker -l info

【讨论】:

    猜你喜欢
    • 2014-10-05
    • 2013-07-01
    • 1970-01-01
    • 2018-08-02
    • 2011-03-20
    • 2017-10-26
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多