小编Dar*_*hit的帖子

如何向特定的worker注册Celery任务?

我正在用 Python/Django 开发 Web 应用程序,并且有几个任务在 celery 中运行。

我必须一次运行一个任务 A,因此我使用 --concurrency=1 创建了工作线程,并使用以下命令将任务 A 路由到该工作线程。

celery -A proj worker -Q A -c 1 -l INFO
Run Code Online (Sandbox Code Playgroud)

一切工作正常,因为该工作进程处理任务 A 和其他任务被路由到默认队列。

但是,当我使用inspect命令为工作人员获取注册任务时,上述工作人员返回所有任务。这是绝对正确的,因为当我启动工作程序时,它将项目的所有任务显示为注册任务,但仅处理任务 A。

以下是我启动时工作人员的输出。

$ celery -A proj worker -Q A -c 1 -l INFO

 -------------- celery@pet_sms v4.0.2 (latentcall)
---- **** ----- 
--- * ***  * -- Linux-4.8.10-040810-generic-x86_64-with-Ubuntu-16.04-xenial 2018-04-26 14:11:49
-- * - **** --- 
- ** ---------- [config]
- ** ---------- .> app:         proj:0x7f298a10d208
- ** ---------- .> transport:   redis://localhost:6379/0
- ** …
Run Code Online (Sandbox Code Playgroud)

celery celery-task django-celery celerybeat

6
推荐指数
1
解决办法
2738
查看次数

标签 统计

celery ×1

celery-task ×1

celerybeat ×1

django-celery ×1