发布于2021-01-23 19:51 阅读(541) 评论(0) 点赞(9) 收藏(1)
0
1
2
3
4
我喜欢在一个不可变任务的小型工作流程中结合一个链和一组,并且没有结果后端。
但是,当我尝试使用此Celery时,它会自动将其转换为和弦,然后抱怨后端没有结果。
有什么方法可以让我在没有结果后端的情况下正常工作?
码:
@shared_task
def test_canvas():
workflow = chain(group(test_task_a.si(), test_task_b.si()), test_task_c.si())
workflow.delay()
这是我收到的错误消息:
raised unexpected: NotImplementedError('Starting chords requires a result backend to be configured.
Note that a group chained with a task is also upgraded to be a chord, as this pattern requires synchronization.
Result backends that supports chords: Redis, Database, Memcached, and more.',)
有趣的是,自己经营连锁店或团体就可以了。
例:
workflow = chain(test_task_a.si(), test_task_b.si(), test_task_c.si())
workflow.delay()
不幸的是,我认为答案是否定的-如果没有后端,您将无法和弦:
和弦中使用的任务一定不能忽略其结果。实际上,这意味着您必须启用result_backend才能使用和弦。
您的第一个示例test_canvas
是隐式的chord
:和弦是仅在组中的所有任务完成执行(link)后才执行的任务。如果考虑背后的逻辑(在这里解释),那么某个人(后端)需要弄清楚所有并行任务何时结束(该组),以知道何时应该触发下一个(链接的)任务。
在第二个示例中,与之同时运行多个任务group
很简单(如果不采取任何措施,以后再也无法协调)。相同chain
-每个任务都负责触发下一个任务,不需要复杂的协调。
0
1
2
3
4
作者:黑洞官方问答小能手
链接: https://www.pythonheidong.com/blog/article/787085/2e02c9af4813aae7a1e0/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系z452as@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!