From 59d1b98d3444fb15221667ab01f53e9e783cf752 Mon Sep 17 00:00:00 2001 From: Dmitry Afanasyev Date: Sun, 21 Aug 2022 22:59:26 +0300 Subject: [PATCH] create queue remove Lenok from scheduler --- app/core/scheduler.py | 2 +- app/main.py | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/core/scheduler.py b/app/core/scheduler.py index de5ccd2..12b4c51 100644 --- a/app/core/scheduler.py +++ b/app/core/scheduler.py @@ -9,7 +9,7 @@ cron_jobs = [ user_chat_ids = { 'chat_ids': [ 417070387, # me - 431571617, # Lenok + # 431571617, # Lenok ] } diff --git a/app/main.py b/app/main.py index 3523f2c..0dc32aa 100644 --- a/app/main.py +++ b/app/main.py @@ -22,9 +22,12 @@ from app.settings import ( WEBHOOK_URL, ) +queue = asyncio.Queue() # type: ignore + async def bot_startup() -> None: await bot.set_webhook(WEBHOOK_URL) + asyncio.create_task(get_updates_from_queue()) logger.info(f'Webhook set to {WEBHOOK_URL}'.replace(API_TOKEN, '{BOT_API_TOKEN}')) asyncio_schedule() @@ -74,7 +77,7 @@ def bot_polling() -> None: ) -async def webhook(request: web.Request) -> web.Response: +async def put_updates_on_queue(request: web.Request) -> web.Response: """ Listen {WEBHOOK_PATH} and proxy post request to bot @@ -83,18 +86,25 @@ async def webhook(request: web.Request) -> web.Response: """ data = await request.json() tg_update = Update(**data) + queue.put_nowait(tg_update) + logger.info(queue.__dict__) + + return web.Response(status=HTTPStatus.ACCEPTED) + + +async def get_updates_from_queue() -> None: + update = await queue.get() Dispatcher.set_current(dispatcher) Bot.set_current(dispatcher.bot) - await dispatcher.process_update(tg_update) - - return web.Response(status=HTTPStatus.OK) + await dispatcher.process_update(update) + await asyncio.sleep(0.2) async def create_app() -> web.Application: application = web.Application() - application.router.add_post(f'{WEBHOOK_PATH}/{API_TOKEN}', webhook) + application.router.add_post(f'{WEBHOOK_PATH}/{API_TOKEN}', put_updates_on_queue) application.on_startup.append(on_startup_gunicorn) application.on_shutdown.append(on_shutdown_gunicorn) return application