如何 运行 在 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 指定哪些任务由哪些工作人员处理。路由是一个深入的话题,但是一旦掌握了它,它就相当简单了。
我有两个 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 指定哪些任务由哪些工作人员处理。路由是一个深入的话题,但是一旦掌握了它,它就相当简单了。