返回立即数,然后调用asyncio.sleep

时间:2020-09-21 06:40:35

标签: python asynchronous async-await timeout python-asyncio

我需要此练习的帮助,我具有以下功能:

async def check_name(self):
        await asyncio.sleep(5)
        if SOmeFunction():
            DoSomethng
        else:
            DosomethingElse

现在我想在其他函数中调用上面的函数,但是问题是我希望下面的函数返回立即数,然后调用check_name()。这是我到目前为止所做的(我想添加try ..最终但没有用,它先调用check_name然后等待5秒,然后返回实际值。我想先返回该值,然后致电check_name()

async def func():
        value = func2()
        try:
          return value

        finally:
          await self.check_name()

1 个答案:

答案 0 :(得分:0)

您可以使用close()来指示事件循环等待asyncio.create_task本身,即在后台运行它:

check_name

请注意,如果执行此操作,则async def func(): asyncio.create_task(self.check_name()) value = func2() 的返回值将不可用,并且如果引发异常,则仅由事件循环报告。