【发布时间】:2016-11-19 18:06:34
【问题描述】:
1) 芹菜链。
在我读到的文档上:
这是一个简单的链,第一个任务执行时将其返回值传递给链中的下一个任务,依此类推。
>>> from celery import chain
>>> # 2 + 2 + 4 + 8
>>> res = chain(add.s(2, 2), add.s(4), add.s(8))()
>>> res.get()
16
但是链项的结果到底是在哪里传递给下一个链项的呢?在 celery 服务器端,还是传给我的应用,然后我的应用传给下一个链项?
这对我很重要,因为我的结果非常大,可以将它们传递给应用程序,我想将所有这些消息传递到 celery 服务器中。
2) 芹菜组。
>>> g = group(add.s(i) for i in xrange(10))
>>> g(10).get()
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
我能否确定这些任务会尽可能多地一起执行。自组的第一个任务开始执行以来,celery 是否会优先考虑某个组?
例如,我有 100 个请求,每个请求运行一组任务,我不想在彼此之间混合来自不同组的任务。第一个开始处理的请求可以是最后一个完成的,而他的最后一个任务正在等待空闲的工作人员,这些工作人员正忙于其他请求的任务。一组任务尽可能一起执行似乎更好。
如果你能帮助我,我将不胜感激。
【问题讨论】:
标签: celery