J'ai une action de contrôleur dans l'application 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
est une fonction asynchrone. Maintenant, lorsque j'appelle action, je veux que mon action revienne le plus tôt possible et perform_message
mettre en boucle d'événement.
De cette façon, perform_message
n'est pas exécuté
Une façon serait d'utiliser create_task
fonction:
import asyncio
async def handler_message(request):
...
loop = asyncio.get_event_loop()
loop.create_task(perform_message(x,y,z))
...
Une autre façon serait d'utiliser ensure_future
fonction:
import asyncio
async def handler_message(request):
...
loop = asyncio.get_event_loop()
loop.ensure_future(perform_message(x,y,z))
...