Подтвердить что ты не робот

Почему он не может найти файл конфигурации celery?

/home/myuser/mysite-env/lib/python2.6/site-packages/celery/loaders/default.py:53: NotConfigured: нет celeryconfig.py модуль найден! Пожалуйста, убедитесь, что это существует и доступно для Python.
NotConfigured)

Я даже определил его в своем /etc/profile, а также в своей виртуальной среде "активировать". Но он его не читал.

4b9b3361

Ответ 1

У меня была аналогичная проблема с моим модулем задач. Простой

# celery config is in a non-standard location
import os
os.environ['CELERY_CONFIG_MODULE'] = 'mypackage.celeryconfig'

в моем пакете __init__.py решил эту проблему.

Ответ 2

Теперь в Celery 4.1 вы можете решить эту проблему с помощью этого кода (самый простой способ):

import celeryconfig

from celery import Celery

app = Celery()
app.config_from_object(celeryconfig)

Для примера маленький celeryconfig.py:

BROKER_URL = 'pyamqp://'
CELERY_RESULT_BACKEND = 'redis://localhost'
CELERY_ROUTES = {'task_name': {'queue': 'queue_name_for_task'}}

Также очень простой способ:

from celery import Celery

app = Celery('tasks')

app.conf.update(
    result_expires=60,
    task_acks_late=True,
    broker_url='pyamqp://',
    result_backend='redis://localhost'
)

Или Использование класса/объекта конфигурации:

from celery import Celery

app = Celery()

class Config:
    enable_utc = True
    timezone = 'Europe/London'

app.config_from_object(Config)
# or using the fully qualified name of the object:
#   app.config_from_object('module:Config')

Или как было упомянуто установкой CELERY_CONFIG_MODULE

import os
from celery import Celery

#: Set default configuration module name
os.environ.setdefault('CELERY_CONFIG_MODULE', 'celeryconfig')

app = Celery()
app.config_from_envvar('CELERY_CONFIG_MODULE')

Также смотрите:

Ответ 3

Убедитесь, что у вас есть celeryconfig.py в том же месте, на котором вы работаете "celeryd", или иначе убедитесь, что он доступен на пути Python.

Ответ 4

вы можете обойти это с помощью среды... или использовать -config: для этого требуется

  • путь относительно CELERY_CHDIR из /etc/defaults/celeryd
  • имя модуля python, а не имя файла.

Сообщение об ошибке могло бы, вероятно, использовать эти два факта.