+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

我可以在没有结果后端的情况下将链和组合并吗?

发布于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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

9 0
收藏该文
已收藏

评论内容:(最多支持255个字符)