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

问题描述

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

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()

解决方法

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

check_name

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