如何在芹菜中创建不同并发的任务?



以下任务有不同的要求。slow任务应该只一个接一个地执行。fast任务可以执行相同(或更多(操作,但应独立于slow任务。

我将它们绑定到不同的队列,但全局并发仍然适用于两者。如果它1那么一个任务要么从两个队列中的一个中提取出来,要么如果它是>1的,那么慢速任务可以有多个它不应该的执行。

@app.task
def slow(x, y):
# slow operation, only one at a time with concurrency of 1
heavy_operation_takes_10_minutes()

@app.task
def fast(x, y):
# can also be concurrency of 1 or more, as long as independent of `slow` task
# ...
return x + y

芹菜可以吗?

你可以做的是将任务放到不同的队列中(据我所知,你已经这样做了(,然后运行两个不同的芹菜工作线程来监听这些队列,具有不同的并发性。例如:

# non-concurrent worker for slow tasks
celery worker -A proj -Q queue-for-slow-tasks --concurrency=1 
# concurrent worker for fast tasks
celery worker -A proj -Q queue-for-fast-tasks

相关内容

  • 没有找到相关文章