返回立即值然后调用 asyncio.sleep

Returning immediate value and then call asyncio.sleep

我需要这个练习的帮助,我有这个功能:

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

现在我想在其他函数中调用上面的函数,但问题是我想要下面的函数return一个立即值,然后调用check_name()。这是我到目前为止所做的(我想添加 try.. 最后但它没有用它首先调用 check_name 然后等待 5 秒然后它是 returning 实际值. 我想先 return 值然后调用 check_name()

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

        finally:
          await self.check_name()

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

async def func():
    asyncio.create_task(self.check_name())
    value = func2()

请注意,如果您这样做,check_name() 的 return 值将不可用,如果它引发异常,它只会被事件循环报告。