我在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
答案 0 :(得分:10)
一种方法是使用create_task功能:
import asyncio
async def handler_message(request):
...
loop = asyncio.get_event_loop()
loop.create_task(perform_message(x,y,z))
...
答案 1 :(得分:0)
其他方式是使用ensure_future函数:
import asyncio
async def handler_message(request):
...
loop = asyncio.get_event_loop()
loop.ensure_future(perform_message(x,y,z))
...