python - 芹菜 - 如何使用多个队列?
问题描述
我想为不同的任务创建多个队列。例如emailqueue
发送电子邮件或pipedrive
队列以同步任务,pipedrive API
因此email
不必等到所有pipedrives
同步完成,反之亦然。
我是路由新手,我尝试了两种创建队列的方法,但它们似乎都不起作用。
这是一种优选的方法。我试图在
@task
装饰器中定义队列@task(bind=True, queue='pipedrivequeue')
def backsync_lead(self,lead_id):
设置.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.
解决方案
您需要使用明确命名的队列运行一个工作人员,然后 django 将能够进入该队列;
celery worker -A project.celery -l info # Default queue worker
celery worker -A project.celery -l info -Q pipedrivequeue # pipedrivequeue worker
celery worker -A project.celery -l info -Q testqueue # testqueue worker
推荐阅读
- javascript - 从 ReactApp 中的公共文件夹访问 JSON
- cakephp - CakePHP 方法 BreadcrumbsHelper::templates 不存在
- genetic-algorithm - 适应度函数可以是 GA 中的“最小值作为最佳值”类型吗?
- vue.js - NuxtJS 中如何将数据从父级传递给子级
- design-patterns - 状态模式与多态性
- html - 无法设置表格大小和滚动
- php - 将可见 URL 更改为另一个
- asp.net-identity - 在 ASP.net Core 3 身份中配置密码要求不起作用
- node.js - MongoDB 播种和复制
- coldfusion - 使用 cfhtmltopdf 在 Coldfusion 中生成 PDF 时出错