如何 运行 在 celery 中只选择任务

How to run only selected tasks in celery

我有两个 celery 任务,在两个不同的文件中实现。 Task1 需要启动 task2,所以 task2 是从 task1 导入的。

mypkg
 | tasks
    | task1.py
    | task2.py

task1.py

from mypkg.tasks.task2 import task2

celery_app = Celery('mypkg.tasks.task1', broker='redis://localhost')

@celery_app.task
def task1():
   print('Do task 1')
   // Then call task2
   task2.delay()

task2.py

celery_app = Celery('mypkg.tasks.task2', broker='redis://localhost')

@celery_app.task
def task2():
   print('Do task 2')

当我使用下面的命令启动 celery 时,两个任务 运行 虽然我只期待 task1:

pipenv run celery -A mypkg.tasks.task1 worker --loglevel=info

这很可能是因为 task1 导入了 task2。我怎样才能告诉 celery 只执行在 task1 中找到的 运行 个任务?

如果这是您真正想要的,只需将您的实例放在不同的代理 URL 上,例如,

celery_app = Celery('mypkg.tasks.task1', broker='redis://localhost/1')

。 . .和 。 . .

celery_app = Celery('mypkg.tasks.task2', broker='redis://localhost/2')

虽然您可以这样做,但我建议您 using routing and queues 指定哪些任务由哪些工作人员处理。路由是一个深入的话题,但是一旦掌握了它,它就相当简单了。