运行芹菜组:两个任务并行运行以获得结果,从而生成第三个结果

2024-04-29 08:32:54 发布

您现在位置:Python中文网/ 问答频道 /正文

如何设置它,使相关任务并行运行(而不是顺序运行),以减少总体执行时间

  • 我有下面的“主”任务
  • 它取决于获取最新的成交价格(symbol)选项链(symbol)芹菜任务结果
  • 主任务转换这两个任务的结果以生成最终的数据透视表
  • 问题在于,这两个独立的任务都与不同的API系统通信,以获取输入(有时需要几秒钟才能执行)

  • 我注意到的是,组语句中芹菜任务的顺序很重要:

    • 如果get\u last\u close\u price是第一个,则它在选项链之前运行(反之亦然)
    • 在我看来,这些语句似乎是按顺序运行的,而不是并行运行的
    • 我的理解错了吗

@celery.task(name='master_task')
def process_chain(symbol):

   # g = group(get_latest_close_price.s(symbol), option_chain.s(symbol))
   g = group(option_chain.s(symbol), get_latest_close_price.s(symbol))

   results = g()

   with result.allow_join_result():
       data = results.get()
       data = util_transform_option_chain(data[1], data[0])

   return({'result':data})

Tags: chaintaskclosedataget顺序group语句
1条回答
网友
1楼 · 发布于 2024-04-29 08:32:54

group肯定会并行运行。如果您有多个工作进程或并发性>;1.但是,仅供参考,您可能需要将^{}group组合起来,以您想要的方式处理结果

相关问题 更多 >