如何在芹菜的每个块执行结束时调用任务



我正在尝试在完成一大块任务时更新一些汇总数据。它基本上是和弦的概念在一个小节的末尾实现。我该如何实现呢?

好了,最后我这样解决了。

我首先将传入的arg_collection分解为块大小的子集合。对于每一个,我们然后应用一个和弦。


    # required util
    def n_sized_parts(inp_iterable, n):
         return (inp_iterable[i:i+n] for i in xrange(0,len(inp_iterable),n))
    # defintion of tasks
    @task
    def gen_task(arg1, arg2):
        return arg1 + arg2
    @task
    def any_callback_task_for_end_of_chunk(some_arg):
        return some_arg * 10
        # this is a trivial example. 
        # usually, you will want to do something better.
    @task
    def apply_chord_to_chunk(arg_collection, *args, **kwargs):
        task_list = []
        callback_arg = kwargs.pop('callback_arg')
        for part in n_sized_parts(arg_collection, size_of_each_chunk):
             task_list.append(chord(gen_task.starmap(part))(any_callback_task_for_end_of_chunk.si(callback_arg))))
         return task_list
    # invocation
    apply_chord_to_chunk.s(zip(xrange(100),xrange(100)), callback_arg='asdgag')
如果你在这个解决方案中发现任何问题,请让我知道。我将快速更新任何需要的编辑

相关内容

  • 没有找到相关文章

最新更新