mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Remove experimental
This commit is contained in:
parent
706f658a67
commit
07ec7eafeb
1 changed files with 0 additions and 48 deletions
|
|
@ -1,48 +0,0 @@
|
|||
import asyncio
|
||||
import time
|
||||
|
||||
from aiogram import Bot
|
||||
from aiogram.client.session.middlewares.base import (
|
||||
BaseRequestMiddleware,
|
||||
NextRequestMiddlewareType,
|
||||
)
|
||||
from aiogram.exceptions import TelegramNetworkError, TelegramRetryAfter
|
||||
from aiogram.methods import GetUpdates, TelegramMethod
|
||||
from aiogram.methods.base import Response, TelegramType
|
||||
|
||||
|
||||
class RetryAfterMiddleware(BaseRequestMiddleware):
|
||||
def __init__(self, max_retry_timeout: float = 10):
|
||||
self.max_retry_timeout = max_retry_timeout
|
||||
|
||||
async def __call__(
|
||||
self,
|
||||
make_request: NextRequestMiddlewareType[TelegramType],
|
||||
bot: "Bot",
|
||||
method: TelegramMethod[TelegramType],
|
||||
) -> Response[TelegramType]:
|
||||
if isinstance(method, GetUpdates):
|
||||
# Get updates retried in polling process
|
||||
return await make_request(bot, method)
|
||||
|
||||
start = time.monotonic()
|
||||
|
||||
while True:
|
||||
try:
|
||||
result = await make_request(bot, method)
|
||||
except TelegramRetryAfter as e:
|
||||
error = e
|
||||
sleep_interval = e.retry_after
|
||||
except TelegramNetworkError as e:
|
||||
error = e
|
||||
sleep_interval = 1
|
||||
else:
|
||||
break
|
||||
|
||||
request_time = time.monotonic() + sleep_interval
|
||||
if request_time - start < 0:
|
||||
raise error
|
||||
|
||||
await asyncio.sleep(sleep_interval)
|
||||
|
||||
return result
|
||||
Loading…
Add table
Add a link
Reference in a new issue