Skip to content

Commit 286fe10

Browse files
committed
Add retries
1 parent e7e6d18 commit 286fe10

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

backend/app.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import asyncio
12
import logging
23

34
from aiogram import Bot, Dispatcher, Router, types
@@ -19,15 +20,30 @@
1920
allow_headers=["*"],
2021
)
2122
webhook_api_router = APIRouter()
22-
app.include_router(webhook_api_router)
2323

2424
bot = Bot(token=settings.BOT_TOKEN, parse_mode="HTML")
2525
dp = Dispatcher()
2626
messages_handler = Router()
2727
TELEGRAM_WEBHOOK_URL = f"{settings.WEBHOOK_DOMAIN}/webhook"
2828

2929

30-
@webhook_api_router.post("/webhook")
30+
def retry_after(seconds: int):
31+
def decorator(func):
32+
async def wrapper(*args, **kwargs):
33+
result = False
34+
while not result:
35+
try:
36+
await func(*args, **kwargs)
37+
result = True
38+
except Exception as e:
39+
logger.error(f"Error while processing message: {e}")
40+
logger.info(f"Retrying after {seconds} seconds")
41+
await asyncio.sleep(seconds)
42+
return wrapper
43+
return decorator
44+
45+
46+
@webhook_api_router.post("/webhook" )
3147
async def telegram_webhook(request: dict):
3248
update = types.Update(**request)
3349
await dp.feed_update(bot=bot, update=update)
@@ -38,6 +54,7 @@ async def root():
3854
return {"status": "ok"}
3955

4056

57+
@retry_after(settings.RETRY_TIMEOUT)
4158
async def register_webhook():
4259
await bot.set_webhook(url=f"{settings.WEBHOOK_DOMAIN}/webhook")
4360
webhook_info = await bot.get_webhook_info()

0 commit comments

Comments
 (0)