芹菜工人并发



我有一个python脚本,它将成为一个芹菜任务。我的应用程序需要许多并发工作程序(来自同一脚本(,因为每个工作程序都需要按顺序处理消息。我不能使用参数concurrency=n,因为这样消息就不会按顺序处理,这是一种要求。

因此,我所做的是在消息代理中设置"n"个不同的队列,然后启动"n"不同的工作程序,每个工作程序分别处理每个队列,并且我在每个工作程序中设置了concurrency=1,以便按顺序处理每个队列。工人来自同一个脚本,所以要启动这些工人,我必须复制脚本n次,并在不同的线程中并行运行所有工人。

在我看来,这似乎不是实现这一目标的最有效方法,因为代码被复制了很多次。还有其他方法可以做到这一点吗?

如果需要更多细节,请告诉我。

map和starmap是内置任务,它们为序列中的每个元素调用所提供的调用任务。

例如,task.map([1,2](–导致调用单个任务,将参数按顺序应用于任务函数,结果为:res=[任务(1(,任务(2(]执行任务(1(,然后执行任务(2(。

https://docs.celeryproject.org/en/stable/userguide/canvas.html#map-星图

如果任务(2(使用任务(1(的结果,则应使用链。https://docs.celeryproject.org/en/stable/userguide/canvas.html#chains

最新更新