如何在不等待的情况下调用异步函数?

问题描述:

我在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)) 
...