Company logo
  • Empleos
  • Bootcamp
  • Acerca de nosotros
  • Para profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
    • Bootcamp
  • Para empresas
    • Inicio
    • Nuestro proceso
    • Planes
    • Pruebas
    • Nómina
    • Blog
    • Comercial
    • Calculadora

0

101
Vistas
How do I make a decorator to wrap an async function with a try except statement?

Let's say I have an async function like this:

async def foobar(argOne, argTwo, argThree):
   print(argOne, argTwo, argThree)

I want to make a decorator and use it on this function in a way that it wraps the above code in a try except statement like this:

try:
   print(argOne, argTwo, argThree)
except:
   print('Something went wrong.)

Is there any way to do this?

9 months ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

because wrapper called first, we should also define it as a async function: async def wrap(*arg, **kwargs):

import asyncio

def decorator(f):
    async def wrapper(*arg, **kwargs):
        try:
            await f(*arg, **kwargs)
        except Exception as e:
            print('Something went wrong.', e)
    return wrapper


@decorator
async def foobar(argOne, argTwo, argThree):
    print(argOne, argTwo, argThree)
    await asyncio.sleep(1)

asyncio.run(foobar("a", "b", "c"))
9 months ago · Santiago Trujillo Denunciar

0

def deco(coro1):
    async def coro2(argOne, argTwo, argThree):
        try:
            await coro1(argOne, argTwo, argThree)
        except:
            print('Something went wrong.')
    return coro2

@deco
async def foobar(argOne, argTwo, argThree):
    print(argOne, argTwo, argThree)
9 months ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos