Celery 如何向特定员工注册芹菜任务?

Celery 如何向特定员工注册芹菜任务?,celery,django-celery,celery-task,celerybeat,Celery,Django Celery,Celery Task,Celerybeat,我正在用Python/Django开发web应用程序,我有几个任务正在芹菜中运行 我必须一次运行一个任务,所以我创建了--concurrency=1的worker,并使用以下命令将任务A路由到该worker celery -A proj worker -Q A -c 1 -l INFO 由于此工作人员处理任务A和其他任务被路由到默认队列,因此一切正常 但是,当我使用inspect命令为worker获取注册的任务时,上面的worker返回所有任务。这是绝对正确的,因为当我启动worker时,它将

我正在用Python/Django开发web应用程序,我有几个任务正在芹菜中运行

我必须一次运行一个任务,所以我创建了--concurrency=1的worker,并使用以下命令将任务A路由到该worker

celery -A proj worker -Q A -c 1 -l INFO
由于此工作人员处理任务A和其他任务被路由到默认队列,因此一切正常

但是,当我使用
inspect
命令为worker获取注册的任务时,上面的worker返回所有任务。这是绝对正确的,因为当我启动worker时,它将项目的所有任务显示为注册任务,但只处理任务A

以下是启动worker时的输出

$ 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
- ** ---------- .> results:     disabled://
- *** --- * --- .> concurrency: 1 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> A exchange=A(direct) key=A


[tasks]
  . task_one
  . task_two
  . task_three
  . A
  . task_four
  . task_five

有没有办法将特定任务注册到Cellery中的工作人员?

请注意工作人员日志中的以下两部分

[queues]
  .> A exchange=A(direct) key=A

[tasks]
  . task_one
  . task_two
  . task_three
  . A
  . task_four
  . task_five
第一部分
[queues]
显示工作人员使用的队列

它显示
A,exchange=A(direct),key=A
,表示此工作人员仅使用队列
A
中的任务。这正是你想要的。您之所以能够实现这种效果,是因为您在通过命令
$scelly-A proj worker-qa-c1-l INFO
启动worker时指定了
-qa

第二部分
[tasks]
显示了此应用程序的所有注册任务


虽然其他任务(如
task\u one
task\u five
)都已注册,但由于这些任务不进入队列
A
,因此该工作人员不会使用任务
task\u one
task\u five

,那么您遇到的问题是什么?您曾经解决过这个问题吗?