Guest User

Untitled

a guest
Oct 17th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. import asyncio
  2. import logging
  3. from functools import wraps
  4.  
  5.  
  6. def async_log_exception(logger, *, reraise=True):
  7. if isinstance(logger, str):
  8. logger = logging.getLogger(logger)
  9.  
  10. def decorator(coroutine):
  11. @wraps(coroutine)
  12. async def wrapper(*args, **kwargs):
  13. try:
  14. return await coroutine(*args, **kwargs)
  15. except Exception as error:
  16. logger.exception('Exception occurred')
  17. if reraise:
  18. raise
  19. return wrapper
  20. return decorator
  21.  
  22.  
  23. @async_log_exception(logger=logging.getLogger(__name__), reraise=False)
  24. async def error():
  25. raise Exception('asdfasdf')
  26.  
  27.  
  28. def main():
  29. loop = asyncio.get_event_loop()
  30. loop.run_until_complete(error())
  31.  
  32.  
  33. if __name__ == '__main__':
  34. main()
Add Comment
Please, Sign In to add comment