2017-06-19 98 views
1

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

回答

3

一種方法是使用create_task功能:

import asyncio 

async def handler_message(request): 
    ... 
    loop = asyncio.get_event_loop() 
    loop.create_task(perform_message(x,y,z)) 
    ... 
0

其他的方式是使用ensure_future功能:

import asyncio 

async def handler_message(request): 
... 
loop = asyncio.get_event_loop() 
loop.ensure_future(perform_message(x,y,z)) 
... 
相關問題