From b1f51dbf21b2d9cfe62d5494ea1c5d38ba670130 Mon Sep 17 00:00:00 2001 From: Capybara-z Date: Wed, 22 Apr 2026 01:17:10 +0000 Subject: [PATCH] Tune broadcast rate / progress throttle --- handlers/admin/sender/scheduled_service.py | 2 +- handlers/admin/sender/sender_handler.py | 5 +++-- handlers/admin/sender/sender_service.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/handlers/admin/sender/scheduled_service.py b/handlers/admin/sender/scheduled_service.py index fac147b6..6dd7eb95 100644 --- a/handlers/admin/sender/scheduled_service.py +++ b/handlers/admin/sender/scheduled_service.py @@ -35,7 +35,7 @@ def clamp_broadcast_workers(value: int | None) -> int: def clamp_broadcast_rate(value: int | None) -> int: - return max(1, min(int(value or 35), 60)) + return max(1, min(int(value or 30), 60)) def ensure_utc_datetime(value: datetime) -> datetime: diff --git a/handlers/admin/sender/sender_handler.py b/handlers/admin/sender/sender_handler.py index 04d1d663..dff9207c 100644 --- a/handlers/admin/sender/sender_handler.py +++ b/handlers/admin/sender/sender_handler.py @@ -410,12 +410,13 @@ async def handle_broadcast_confirm(callback_query: CallbackQuery, state: FSMCont if "message is not modified" not in str(e).lower(): logger.debug(f"[Sender] Обновление прогресса: {e}") - broadcast_service = BroadcastService(bot=bot, session=session, messages_per_second=35) + broadcast_service = BroadcastService(bot=bot, session=session, messages_per_second=30) stats = await broadcast_service.broadcast( messages, workers=5, on_progress=on_progress, progress_interval=2.0, + progress_every=200, ) await callback_query.message.answer( @@ -463,7 +464,7 @@ async def handle_schedule_datetime_input(message: Message, state: FSMContext, se keyboard_json=data.get("keyboard"), scheduled_for=scheduled_for, workers=5, - messages_per_second=35, + messages_per_second=30, ) await state.clear() await message.answer( diff --git a/handlers/admin/sender/sender_service.py b/handlers/admin/sender/sender_service.py index c4634cf0..81deb4f1 100644 --- a/handlers/admin/sender/sender_service.py +++ b/handlers/admin/sender/sender_service.py @@ -34,7 +34,7 @@ def run_broadcast_in_thread( bot = Bot(token=api_token, default=DefaultBotProperties(parse_mode=ParseMode.HTML)) keyboard = InlineKeyboardMarkup.model_validate(keyboard_data) if keyboard_data else None messages = [{"tg_id": tg_id, "text": text_message, "photo": photo, "keyboard": keyboard} for tg_id in tg_ids] - service = BroadcastService(bot=bot, session=None, messages_per_second=35) + service = BroadcastService(bot=bot, session=None, messages_per_second=30) async def on_progress(completed: int, total: int, sent: int, failed: int) -> None: if progress_cb: