Как я могу управлять статусом / цветка сельдерея без опции -A?

Рассмотрим эту сессию bash:

$ export DJANGO_SETTINGS_MODULE=web.settings $ celery status -b redis://redis.businessoptics.dev:6379/1 -t 10 Error: No nodes replied within time constraint. $ celery status -b redis://redis.businessoptics.dev:6379/1 -t 10 -A scaffold.tasks.celery_app celery@worker.9e2c39a1c42c: OK 

Зачем нужна опция -A ? Насколько я могу судить, сельдерей должен уметь обнаруживать необходимые метаданные на redis.

Аналогично, если я запускаю celery flower -b <redis url> он показывает, что он успешно соединяется с redis, но не показывает реальных работников / задач / очередей и показывает, что несколько сообщений, таких как 'stats' inspect method failed . Опять же, добавление -A заставляет его работать.

Я хочу запустить цветок в минимальном автономном контейнере Docker, который не содержит ни моего кода, ни его зависимостей. Несколько репозиториев, таких как этот, предлагают такие вещи. Итак, как я могу это сделать? Связанное репо предлагает множество опций, но никак не указывает опцию -A , которая предполагает, что это необязательно.

Я начинающий сельдерей, поэтому мне может не хватать чего-то глупого. Что я должен сделать?

Модуль scaffold.tasks.celery_app просто выглядит так:

 from celery import Celery from django.conf import settings app = Celery() app.config_from_object(settings) 

И это настройки Django, которые включают сельдерей:

 {'BROKER_HEARTBEAT': 0, 'BROKER_TRANSPORT_OPTIONS': {'fanout_patterns': True, 'fanout_prefix': True, 'visibility_timeout': 172800}, 'BROKER_URL': 'redis://redis.businessoptics.dev:6379/1', 'CELERYBEAT_SCHEDULE': {'journey-heartbeat': {'args': (), 'schedule': <crontab: * * * * * (m/h/d/dM/MY)>, 'task': 'kms.data.journey.tasks.heartbeat'}}, 'CELERYD_CONCURRENCY': 1, 'CELERYD_HIJACK_ROOT_LOGGER': False, 'CELERYD_LOG_COLOR': False, 'CELERYD_MAX_TASKS_PER_CHILD': 1, 'CELERYD_PREFETCH_MULTIPLIER': 1, 'CELERY_ACCEPT_CONTENT': ['pickle'], 'CELERY_ACKS_LATE': True, 'CELERY_DEFAULT_EXCHANGE': 'default', 'CELERY_DEFAULT_EXCHANGE_TYPE': 'direct', 'CELERY_DEFAULT_QUEUE': 'default', 'CELERY_DEFAULT_ROUTING_KEY': 'default', 'CELERY_IGNORE_RESULT': False, 'CELERY_IMPORTS': ['kms.knowledge.query.tasks2', # names of several more modules... ], 'CELERY_QUEUES': [<unbound Queue tablestore -> <unbound Exchange default(direct)> -> kms.data.table_store.tasks.#>, # several more similar-looking Queues... <unbound Queue default -> <unbound Exchange default(direct)> -> default>], 'CELERY_REDIRECT_STDOUTS': False, 'CELERY_RESULT_BACKEND': 'database', 'CELERY_RESULT_DBURI': 'mysql://businessoptics:businessoptics@mysql.businessoptics.dev:3306/product', 'CELERY_RESULT_DB_SHORT_LIVED_SESSIONS': True, 'CELERY_ROUTES': ['scaffold.tasks.routers.TaskNameRouter'], 'CELERY_SEND_EVENTS': True, 'CELERY_SEND_TASK_ERROR_EMAILS': False, 'CELERY_SEND_TASK_SENT_EVENT': True, 'CELERY_STORE_ERRORS_EVEN_IF_IGNORED': True, 'CELERY_TASKNAME_ROUTES': [('tablestore', 'kms.data.table_store.tasks.#'), # bunch of routes... ], 'CELERY_TASK_RESULT_EXPIRES': None, 'CELERY_TIMEZONE': 'UTC', 'CELERY_TRACK_STARTED': True, 'CELERY_WORKER_DIRECT': True } 

Вот соответствующие версии:

 celery==3.1.19 Django==1.8 django-celery==3.1.0 redis==2.10.3 

One Solution collect form web for “Как я могу управлять статусом / цветка сельдерея без опции -A?”

Параметр -A – это тот, который передает экземпляр celery с соответствующей конфигурацией, включая пакет, содержащий ваши задачи.

Чтобы использовать все функции, цветы должны быть сконфигурированы как рабочий, это означает знание пакета, в котором выполняются ваши задачи сельдерея, и зная их.

Добавьте к вашему контейнеру докера все необходимые библиотеки python не так сложно, например, вы можете добавить в этот файл строку конфигурации CELERY_IMPORTS следующим образом:

 CELERY_IMPORTS = os.getenv('CELERY_IMPORTS ', 'default.package') 

ОБНОВИТЬ

Как @asksol, создатель сельдерея, указал в комментариях, вот более подробное объяснение того, почему вам нужен вариант -A:

Цветок также является потребителем сообщений, поэтому он поможет восстановить неустановленные сообщения. Поскольку у вас есть настраиваемая видимость, начиная с неконфигурированного цветка, он будет использовать тайм-аут видимости по умолчанию и, таким образом, будет перенаправлять незакрепленные сообщения быстрее, чем ваши работники. Всегда используйте -A, чтобы синхронизация рабочей, цветовой и клиентской конфигурации

  • Не удается подключиться к redis с помощью django-redis
  • Почему я должен использовать Redis, когда у меня есть PostgreSQL в качестве моей базы данных для Django?
  • Heroku: фоновые задачи в Python с RQ
  • python flask как передать динамический параметр декоратору
  • Python - Как проверить, доступен ли сервер Redis
  • Соединение Python Redis должно быть закрыто по каждому запросу? (колба)
  • Доступ к базе данных из рабочего процесса
  • Как получить Job по id в RQ python?
  •  
    Interesting Posts for Van-Lav

    Pandas Dataframe AttributeError: объект DataFrame не имеет атрибута 'design_info'

    Обнаружение частоты Python

    Убить python-интерпретатор в linux с терминала

    Прерывание строки вдоль пробела после превышения определенной ширины (Python)

    В каком порядке это выражение if, вычисляемое в Python

    ipywidgets: обновить один виджет на основе результатов другого

    Обход нескольких сайтов с помощью Python Scrapy с ограниченной глубиной на сайт

    Временной график из данных CSV (отметка времени и событий): постоянная x-метки

    Расширение флеш-сессии и сеанс по умолчанию

    сравнить два пути Windows, один из которых содержит тильду, в python

    Как я могу автоматически перезагрузить модули задач с помощью демона Celery?

    Можете ли вы помочь мне решить эту проблему с SUDS / SOAP?

    Как скопировать базу данных с mysqldump и mysql в Python?

    Python + Tornado Перезапуск после редактирования файлов

    Кто-нибудь знает эту структуру данных Python?

    Python - лучший язык программирования в мире.