From 9de31422ebd4f33076e7baa6e40ec80237163edd Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 7 Jan 2018 18:21:09 +0200 Subject: [PATCH] Remove log message about received update in dispatcher and fix handling errors in tasks (async_task). --- aiogram/dispatcher/__init__.py | 19 ++++++++----------- aiogram/dispatcher/webhook.py | 13 +++++++++---- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/aiogram/dispatcher/__init__.py b/aiogram/dispatcher/__init__.py index 9cf328be..dc378439 100644 --- a/aiogram/dispatcher/__init__.py +++ b/aiogram/dispatcher/__init__.py @@ -126,9 +126,6 @@ class Dispatcher: :param update: :return: """ - start = time.time() - success = True - self.last_update_id = update.update_id context.set_value(UPDATE_OBJECT, update) try: @@ -189,10 +186,6 @@ class Dispatcher: if err: return err raise - finally: - log.info(f"Process update [ID:{update.update_id}]: " - f"{['failed', 'success'][success]} " - f"(in {round((time.time() - start) * 1000)} ms)") async def reset_webhook(self, check=True) -> bool: """ @@ -1063,10 +1056,14 @@ class Dispatcher: """ def process_response(task): - response = task.result() - - if isinstance(response, BaseResponse): - self.loop.create_task(response.execute_response(self.bot)) + try: + response = task.result() + except Exception as e: + self.loop.create_task( + self.errors_handlers.notify(self, task.context.get(UPDATE_OBJECT, None), e)) + else: + if isinstance(response, BaseResponse): + self.loop.create_task(response.execute_response(self.bot)) @functools.wraps(func) async def wrapper(*args, **kwargs): diff --git a/aiogram/dispatcher/webhook.py b/aiogram/dispatcher/webhook.py index 80163818..e98635f9 100644 --- a/aiogram/dispatcher/webhook.py +++ b/aiogram/dispatcher/webhook.py @@ -186,10 +186,15 @@ class WebhookRequestHandler(web.View): dispatcher = self.get_dispatcher() loop = dispatcher.loop - results = task.result() - response = self.get_response(results) - if response is not None: - asyncio.ensure_future(response.execute_response(self.get_dispatcher().bot), loop=loop) + try: + results = task.result() + except Exception as e: + loop.create_task( + dispatcher.errors_handlers.notify(dispatcher, context.get_value('update_object'), e)) + else: + response = self.get_response(results) + if response is not None: + asyncio.ensure_future(response.execute_response(dispatcher.bot), loop=loop) def get_response(self, results): """