我正在使用Python / Django开发Web应用程序,我有几个在芹菜中运行的任务 .
我必须一次运行一个任务A,所以我使用--concurrency = 1创建了worker,并使用以下命令将任务A路由到该worker .
celery -A proj worker -Q A -c 1 -l INFO
当这个worker处理任务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
有没有办法在芹菜中向 Worker 注册特定任务?