Tune broadcast rate / progress throttle

This commit is contained in:
Capybara-z
2026-04-22 01:17:10 +00:00
parent 5c144229b2
commit b1f51dbf21
3 changed files with 5 additions and 4 deletions
+1 -1
View File
@@ -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:
+3 -2
View File
@@ -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(
+1 -1
View File
@@ -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: