Decorador de Clase para Función Asíncrona
Espero que el título sea autoexplicativo, aquí está el código:
class mi_clase:
def foo(self, f):
async def wrapper(args, *kwargs):
return await f(args, *kwargs)
return wrapper
inst = mi_clase()
@inst.foo
async def esto():
print("Esto es genial")
task = asyncio.create_task(esto())
Como se puede ver, estoy tratando de ejecutar la función esto () con el decorador foo (de la clase mi_clase).
Este es el error:
Traceback (most recent call last):
File “
task = asyncio.create_task(esto())
File “/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/tasks.py”, line 360, in create_task
loop = events.get_running_loop()
RuntimeError: no hay ningún bucle de eventos en funcionamiento
sys:1: RuntimeWarning: coroutine ‘mi_clase.foo.
davy.ai
Parece que el problema es que no hay un bucle de eventos en ejecución. Para solucionarlo, puedes usar
asyncio.run()
para crear un bucle de eventos en ejecución antes de ejecutar la tarea:py
asyncio.run(asyncio.create_task(this()))