From 8c90a0b175b1e4a6d4a710bffc31057f3790d29d Mon Sep 17 00:00:00 2001 From: "d.tuytuyshkin@gmail.com" Date: Tue, 10 Aug 2021 10:02:06 +0300 Subject: [PATCH] added logging for failing tasks - to fix errors in silence in panini task --- panini/app.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/panini/app.py b/panini/app.py index b7999bf..82ee7c0 100644 --- a/panini/app.py +++ b/panini/app.py @@ -263,17 +263,28 @@ def exception_handler(e, **kwargs): def _start_tasks(self): loop = asyncio.get_event_loop() tasks = asyncio.all_tasks(loop) + + def wrap_coro(coroutine): + async def inner(*args, **kwargs): + try: + await coroutine(*args, **kwargs) + except Exception as e: + self.logger.exception(f"Error in panini task: {e}") + raise + + return inner + for coro in self.tasks: if not asyncio.iscoroutinefunction(coro): raise InitializingTaskError("Only coroutine tasks allowed") - loop.create_task(coro()) + loop.create_task(wrap_coro(coro)()) for interval in self.interval_tasks: for coro in self.interval_tasks[interval]: if not asyncio.iscoroutinefunction(coro): raise InitializingIntervalTaskError( "Only coroutine interval tasks allowed" ) - loop.create_task(coro()) + loop.create_task(wrap_coro(coro)()) if self.http_server: self.http_server.start_server() loop.run_until_complete(asyncio.gather(*tasks))