问题
I have a controller action in aiohttp application.
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
is async function. Now, when I call action I want that my action return as soon as possible and perform_message
put in event loop.
In this way, perform_message
isn't executed
回答1:
One way would be to use create_task function:
import asyncio
async def handler_message(request):
...
loop = asyncio.get_event_loop()
loop.create_task(perform_message(x,y,z))
...
回答2:
Other way would be to use ensure_future
function:
import asyncio
async def handler_message(request):
...
loop = asyncio.get_event_loop()
loop.ensure_future(perform_message(x,y,z))
...
来源:https://stackoverflow.com/questions/44630676/how-i-call-async-function-without-await