Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

550
Views
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?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

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"))
over 4 years ago · Santiago Trujillo Report

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)
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!