Я хочу создать несколько очередей для разных задач.Например, emailqueue
для отправки электронных писем или pipedrive
очередь для синхронизации задач с pipedrive API
, поэтому email
не нужно ждать, пока все pipedrives
синхронизируются, и наоборот.
Я новичокв маршрутизации, и я попробовал два подхода для создания очередей, но ни один из них, похоже, не работает.
Это предпочтительный подход.Я пытался определить очередь внутри @task
декоратора
@task(bind=True, queue='pipedrivequeue')
def backsync_lead (self, lead_id):
settings.py
CELERY_ROUTES = { # tried CELERY_TASK_ROUTES too
'pipedrive.tasks.*': {'queue': 'pipedrivequeue'},
...
}
В обоих случаях, когда я запускаю celery worker
вручную, я вижу только одну очередь celery
по умолчанию.
(project) milano@milano-PC:~/PycharmProjects/project$ celery -A project.celery worker -l info
-------------- celery@milano-PC v4.2.2 (windowlicker)
---- **** -----
--- * *** * -- Linux-4.15.0-47-generic-x86_64-with-Ubuntu-18.04-bionic 2019-04-12 17:17:05
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app: project:0x7f3b47f66cf8
- ** ---------- .> transport: redis://localhost:6379//
- ** ---------- .> results: redis://localhost/
- *** --- * --- .> concurrency: 12 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery
[tasks]
. project.apps.apis.pipedrive.tasks.backsync_all_stages
. project.apps.apis.pipedrive.tasks.backsync_lead
Как видно из этой строки:
-------------- [queues]
.> celery exchange=celery(direct) key=celery
Вероятно, существует только одна очередь.Я хочу использовать эту очередь только для задач без указанной очереди.
Знаете ли вы, в чем проблема?
РЕДАКТИРОВАТЬ
(project) milano@milano-PC:~/PycharmProjects/peoject$ celery inspect active_queues
Error: No nodes replied within time constraint.