【问题标题】:Celery ignores Django settings.py variablesCelery 忽略 Django settings.py 变量
【发布时间】:2021-12-16 04:06:18
【问题描述】:

我已经按照以下指南在 Ubuntu 20.04 服务器上设置了一个用于生产的测试 Django 环境:Deploying Django。

具体来说,我把Django项目放在了:

/opt/mydangoproject/
                   celery.py
                   celery_config.py
                   settings.py
                   etc

我还有一个额外的“覆盖”settings.py,它保存了“秘密”,特别是在这种情况下,它位于 celery 登录变量 RABBITMQ_BROKER:

/etc/opt/mydangoproject/
                       settings.py

我已经测试了这个配置,并且我已经确认 /etc/opt/mydangoproject/ 中的设置可用于 Django 环境,但是它们不会被 celery 拾取。我通过将 RABBITMQ_BROKER 登录变量放在主 settings.py (/opt/mydangoproject/) 中确认了这一点,并且 celery 能够访问它。

我的 celery.py 文件:

import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mydangoproject.settings')

app = Celery('mydangoproject')

default_config = 'mydangoproject.celery_config'

app.config_from_object(default_config)
app.autodiscover_tasks()

我的 celery_config.py 文件:

from django.conf import settings

broker_url = settings.RABBITMQ_BROKER
worker_send_task_event = False
task_ignore_result = True
task_time_limit = 600
task_acks_late = True
worker_prefetch_multiplier = 10
worker_cancel_long_running_tasks_on_connection_loss = True
broker_pool_limit = None

/etc/opt/mydjangoproject/ 中的 settings.py :

from mydangoproject.settings import *

ALLOWED_HOSTS = [‘blah’]

RABBITMQ_BROKER = 'amqp://wabbitadmin:somepassword@somepassword@webserver:5672/mydangoproject'

DATABASES = {

    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': ‘blah’,
        'USER': ‘blah’,
        'PASSWORD': ‘somepassword',
        'HOST': 'localhost',
        'PORT': 5432,
    }
  }

STATIC_ROOT = '/var/cache/mydangoproject/static/'
STATIC_URL = '/static/'
MEDIA_ROOT = '/var/opt/mydangoproject/media/'
MEDIA_URL = '/media/'

我的问题是:

  1. 为什么 celery 无法访问 RabbitMQ 登录变量。
  2. 如何解决?

【问题讨论】:

  • 你是说mydjangoproject吗?

标签: django celery


【解决方案1】:

将变量名更改为 CELERY_BROKER_URL 将作为 Celery 以以下语法查找设置变量 - <NAMESPACE_NAME>_<SETTINGS_VARIABLE>

【讨论】:

  • 嗨,Jpg,我将 RABBITMQ_BROKER 更改为 CELERY_BROKER_URL,但仍然没有看到登录变量。
猜你喜欢
  • 1970-01-01
  • 2018-02-04
  • 2018-11-16
  • 2020-11-25
  • 2017-01-06
  • 2020-06-06
  • 2015-08-17
  • 2012-08-23
  • 1970-01-01
相关资源
最近更新 更多