Asyncio:发生异常时等待完成的任务

荷马

该守则有5名工人在工作。每个工人都是这样的(短代码):

async def worker(name):   

   queue_item = await queue.get()
   msg = queue_item.message  #<--- first attempt
   #.....#

    try:
        #...get_message fails(timeout)...raise#

    except errors.TimedOutError:
        #Retry to get the message
        msg = await get_messages(queue_item.channel, ids=queue_item.id)  # <-- retry                      

        #in order to process it again I put it in different queue 
        await queue_retry.put(msg)  

但是,是否需要await queue_retry等待msg = await get_messages完成才能更新队列?

如果没有,我不知道它会放什么味精,我怀疑它不会等待新的get_message,而会放下旧的。

用户名

是否await queue_retry等待msg = await get_messages更新队列之前完成?

是:在继续之前await get_messages(...)等待get_messages(...)完成。如果不确定,请将变量名称更改为emg msg2(在await和中queye_retry.put lines),以使自己确信您没有使用旧的变量msg

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章