如何在不等待的情况下调用异步函数?
问题描述:
我在aiohttp应用程序中有一个控制器操作。如何在不等待的情况下调用异步函数?
async def handler_message(request):
try:
content = await request.json()
perform_message(x,y,z)
except (RuntimeError):
print("error in perform fb message")
finally:
return web.Response(text="Done")
perform_message是异步函数。现在,当我调用动作时,我希望我的动作尽快返回,并将perform_message放入事件循环中。
这样,不执行perform_message
答
一种方法是使用create_task功能:
import asyncio
async def handler_message(request):
...
loop = asyncio.get_event_loop()
loop.create_task(perform_message(x,y,z))
...
答
其他的方式是使用ensure_future功能:
import asyncio
async def handler_message(request):
...
loop = asyncio.get_event_loop()
loop.ensure_future(perform_message(x,y,z))
...