Celery 如何向特定员工注册芹菜任务?
我正在用Python/Django开发web应用程序,我有几个任务正在芹菜中运行 我必须一次运行一个任务,所以我创建了--concurrency=1的worker,并使用以下命令将任务A路由到该workerCelery 如何向特定员工注册芹菜任务?,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时,它将
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,那么您遇到的问题是什么?您曾经解决过这个问题吗?