Celery 芹菜链';s传递参数的位置 1)芹菜链。

Celery 芹菜链';s传递参数的位置 1)芹菜链。,celery,Celery,我在文件上读到: 这是一个简单的链,第一个任务执行时将其返回值传递给链中的下一个任务,依此类推。 但链项目的结果到底在哪里传递给下一个链项目呢?在芹菜服务器端,或者它传递到我的应用程序,然后我的应用程序传递到下一个链项目 这对我来说很重要,因为我的结果非常大,可以将它们传递到应用程序,我想把所有这些消息直接传递到芹菜服务器 2)芹菜组。 我能否确保这些任务将尽可能多地一起执行。芹菜是否会优先考虑某个组,因为该组的第一个任务开始执行 例如,我有100个请求,每个请求运行一组任务,我不想将来自不同

我在文件上读到:

这是一个简单的链,第一个任务执行时将其返回值传递给链中的下一个任务,依此类推。

但链项目的结果到底在哪里传递给下一个链项目呢?在芹菜服务器端,或者它传递到我的应用程序,然后我的应用程序传递到下一个链项目

这对我来说很重要,因为我的结果非常大,可以将它们传递到应用程序,我想把所有这些消息直接传递到芹菜服务器


2)芹菜组。 我能否确保这些任务将尽可能多地一起执行。芹菜是否会优先考虑某个组,因为该组的第一个任务开始执行

例如,我有100个请求,每个请求运行一组任务,我不想将来自不同组的任务相互混合。要处理的第一个启动的请求可以是最后一个完成的请求,而他的最后一个任务正在等待空闲的工作人员处理来自其他请求的任务。如果一组任务尽可能多地一起执行,似乎会更好



如果你能帮助我,我将不胜感激。芹菜链

使用消息传递代理(如rabbitmq)在芹菜端传递结果。使用结果后端存储结果(chord执行显式需要)。您可以通过使用loglevel
'INFO'
运行芹菜工人来验证此信息,并确定如何调用任务

芹菜会在您调用任务后进行维护,因此它确切地知道如何链接您的任务

考虑将两个不同任务链接在一起的回调

2。芹菜组

当您在组中调用任务时,芹菜会并行执行(调用)它们。芹菜工人会根据工作量的大小来挑选芹菜。如果您调用的任务数量超出了您的工作人员所能处理的范围,那么您的前几个任务肯定会首先执行,然后芹菜工作人员会逐渐选择其余的任务

如果要并行调用的任务数量非常大,那么最好在特定池大小的情况下调用

您可以提及中提到的任务优先级

小组中任务的完成取决于每个任务所需的时间。西芹尽量做公平的任务安排

>>> from celery import chain

>>> # 2 + 2 + 4 + 8
>>> res = chain(add.s(2, 2), add.s(4), add.s(8))()
>>> res.get()
16
>>> g = group(add.s(i) for i in xrange(10))
>>> g(10).get()
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]