栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

芹菜-链接组和子任务。->乱序执行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

芹菜-链接组和子任务。->乱序执行

事实证明,在芹菜中,不能将两个组链接在一起。
我怀疑这是因为与任务链接的组自动变成和弦
-> Celery文档:http : //docs.celeryproject.org/en/latest/userguide/canvas.html

将组与另一个任务链接在一起将自动将其升级为和弦:

组返回父任务。将两个组链接在一起时,我怀疑当第一组完成时,和弦会启动回调“任务”。我怀疑这个“任务”实际上是第二组的“父母任务”。我进一步怀疑该父任务在启动该组中的所有子任务后立即完成,因此执行了第二个组之后的下一项。

为了证明这一点,这里是一些示例代码。您需要已经有一个正在运行的celery实例。

# celery_experiment.pyfrom celery import task, group, chain, chordfrom celery.signals import task_sent, task_postrun, task_prerunimport timeimport loggingimport randomrandom.seed()logging.basicConfig(level=logging.DEBUG)### HANDLERS ###    @task_prerun.connect()def task_starting_handler(sender=None, task_id=None, task=None, args=None, kwargs=None, **kwds):        try:        logging.info('[%s] starting' % kwargs['id'])    except KeyError:        pass@task_postrun.connect()def task_finished_handler(sender=None, task_id=None, task=None, args=None, kwargs=None, retval=None, state=None, **kwds):    try: logging.info('[%s] finished' % kwargs['id'])    except KeyError:        passdef random_sleep(id):    slp = random.randint(1, 3)    logging.info('[%s] sleep for %ssecs' % (id, slp))    time.sleep(slp)@task()def thing(id):    logging.info('[%s] begin' % id)    random_sleep(id)    logging.info('[%s] end' % id)def exec_exp():    st = thing.si(id='st')    st_arr = [thing.si(id='st_arr1_a'), thing.si(id='st_arr1_b'), thing.si(id='st_arr1_c'),]    st_arr2 = [thing.si(id='st_arr2_a'), thing.si(id='st_arr2_b'),]    st2 = thing.si(id='st2')    st3 = thing.si(id='st3')    st4 = thing.si(id='st4')    grp1 = group(st_arr)    grp2 = group(st_arr2)    # chn can chain two groups together because they are seperated by a single subtask    chn = (st | grp1 | st2 | grp2 | st3 | st4)    # in chn2 you can't chain two groups together. what will happen is st3 will start before grp2 finishes    #chn2 = (st | st2 | grp1 | grp2 | st3 |  st4)    r = chn()    #r2 = chn2()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号