From 0b9f223b91931bba7c718b7a1362b73790331616 Mon Sep 17 00:00:00 2001 From: Vladless Date: Sat, 21 Feb 2026 04:22:24 +0300 Subject: [PATCH] Redis/ Query optimization/ multithreading/ and more --- Dockerfile | 4 +- api/depends.py | 9 +- api/v1/routes/management.py | 12 +- api/v1/routes/settings.py | 2 +- api/v1/routes/users.py | 30 ++- api/v2/routes/management.py | 11 +- api/v2/routes/settings.py | 2 +- api/v2/routes/users.py | 30 ++- bot.py | 14 ++ core/app.cpython-312-x86_64-linux-gnu.so | Bin 499672 -> 544760 bytes core/bootstrap.py | 5 +- core/cache_config.py | 49 +++++ core/executor.py | 73 ++++++ core/redis_cache.py | 111 ++++++++++ core/settings/buttons_config.py | 5 +- core/settings/management_config.py | 5 +- core/settings/modes_config.py | 5 +- core/settings/money_config.py | 5 +- core/settings/notifications_config.py | 5 +- core/settings/payments_config.py | 5 +- core/settings/providers_order_config.py | 5 +- core/settings/runtime_sync.py | 98 +++++++++ core/settings/tariffs_config.py | 5 +- database/db.py | 3 +- database/models.py | 2 +- database/notifications.py | 35 ++- database/servers.py | 17 ++ database/tariffs.py | 48 +++- database/users.py | 44 ++-- docker-compose.yml | 26 +++ filters/admin.py | 3 + handlers/admin/clusters/cluster_manage.py | 1 + handlers/admin/restart/restart_handler.py | 11 +- handlers/admin/users/users_hwid.py | 78 +++---- handlers/admin/users/users_keys.py | 7 + handlers/admin/users/users_tariffs.py | 2 + handlers/coupons.py | 1 + handlers/keys/key_freeze.py | 1 + handlers/keys/key_renew.py | 1 + handlers/keys/key_view.py | 94 ++++---- handlers/keys/keys.py | 1 + handlers/keys/operations/aggregated_links.py | 74 ++++--- handlers/keys/operations/renewal.py | 52 +++-- handlers/keys/operations/traffic.py | 51 ++--- handlers/keys/operations/update.py | 111 +++++----- handlers/keys/subscriptions.py | 73 +++--- .../notifications/general_notifications.py | 142 +++++++++--- handlers/start.py | 11 +- handlers/tariffs/addons/key_addons_main.py | 1 + handlers/tariffs/addons/key_addons_pack.py | 1 + handlers/tariffs/tariff_display.py | 68 ++---- middlewares/__init__.py | 48 +++- middlewares/admin.py | 15 +- middlewares/ban_checker.py | 75 ++++--- middlewares/concurrency.py | 19 +- middlewares/direct_start_blocker.py | 19 +- middlewares/runtime_config_sync.py | 21 ++ middlewares/session.py | 25 ++- middlewares/subscription.py | 50 ++++- middlewares/throttling.py | 21 +- middlewares/user.py | 40 +++- panels/remnawave_runtime.py | 208 ++++++++++++++++++ requirements.txt | 1 + servers.py | 23 +- utils/backup.py | 21 +- utils/button_icons.py | 1 - utils/errors.py | 4 + 67 files changed, 1551 insertions(+), 489 deletions(-) create mode 100644 core/cache_config.py create mode 100644 core/executor.py create mode 100644 core/redis_cache.py create mode 100644 core/settings/runtime_sync.py create mode 100644 middlewares/runtime_config_sync.py create mode 100644 panels/remnawave_runtime.py diff --git a/Dockerfile b/Dockerfile index 207b09d8..7c42e7a4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,9 @@ RUN rm -rf /app/venv \ && /app/venv/bin/pip install --upgrade pip \ && /app/venv/bin/pip install -r requirements.txt -RUN adduser --disabled-password --gecos "" appuser && chown -R appuser:appuser /app +RUN adduser --disabled-password --gecos "" appuser \ + && mkdir -p /app/backups \ + && chown -R appuser:appuser /app USER appuser CMD ["/app/venv/bin/python", "main.py"] diff --git a/api/depends.py b/api/depends.py index b67d668e..15aa2ed2 100644 --- a/api/depends.py +++ b/api/depends.py @@ -12,7 +12,12 @@ from database.models import Admin async def get_session() -> AsyncGenerator[AsyncSession, None]: async with async_session_maker() as session: - yield session + try: + yield session + await session.commit() + except Exception: + await session.rollback() + raise def hash_token(token: str) -> str: @@ -65,6 +70,7 @@ async def verify_identity_admin_short( """Проверка админа с короткой сессией (для broadcast и др.), чтобы не держать соединение с БД.""" async with async_session_maker() as session: identity = await idb.verify_identity_token(session, x_identity_id, token) + await session.commit() if not identity: raise HTTPException(status_code=401, detail="Unauthorized") if not identity.is_admin: @@ -81,6 +87,7 @@ async def verify_admin_token_short( async with async_session_maker() as session: result = await session.execute(select(Admin).where(Admin.tg_id == admin_id, Admin.token == hashed)) admin = result.scalar_one_or_none() + await session.commit() if not admin: raise HTTPException(status_code=401, detail="Unauthorized") return admin diff --git a/api/v1/routes/management.py b/api/v1/routes/management.py index b2c15624..4bf26774 100644 --- a/api/v1/routes/management.py +++ b/api/v1/routes/management.py @@ -18,6 +18,7 @@ from api.depends import get_session, verify_admin_token, verify_admin_token_shor from database import async_session_maker from config import API_TOKEN, BOT_SERVICE from core.bootstrap import MANAGEMENT_CONFIG +from core.executor import get_thread_pool from core.settings.management_config import update_management_config from database.models import Key, User from database.models import Server @@ -64,9 +65,13 @@ async def _restart_bot() -> None: is_systemd = parent and "systemd" in parent.name().lower() if is_systemd: - subprocess.run( - ["sudo", "systemctl", "restart", BOT_SERVICE], - check=True, + loop = asyncio.get_running_loop() + await loop.run_in_executor( + get_thread_pool(), + lambda: subprocess.run( + ["sudo", "systemctl", "restart", BOT_SERVICE], + check=True, + ), ) else: python_exe = sys.executable @@ -195,6 +200,7 @@ async def launch_broadcast( async with async_session_maker() as session: tg_ids, total_users = await get_recipients(session, payload.send_to, (payload.cluster_name or None)) + await session.commit() if not tg_ids: return {"success": False, "message": "No recipients found", "stats": {"total_messages": 0}} diff --git a/api/v1/routes/settings.py b/api/v1/routes/settings.py index b82be909..aaf4f746 100644 --- a/api/v1/routes/settings.py +++ b/api/v1/routes/settings.py @@ -7,7 +7,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from api.depends import get_session, verify_admin_token from api.v1.schemas.settings import SettingResponse, SettingUpsert -from database import settings_cache +from database.settings_cache import settings_cache from core.settings.buttons_config import BUTTONS_CONFIG, update_buttons_config from core.settings.modes_config import MODES_CONFIG, update_modes_config from core.settings.money_config import MONEY_CONFIG, update_money_config diff --git a/api/v1/routes/users.py b/api/v1/routes/users.py index 042a60e0..9bdb23b7 100644 --- a/api/v1/routes/users.py +++ b/api/v1/routes/users.py @@ -7,7 +7,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from api.depends import get_session, verify_admin_token from api.v1.routes.base_crud import generate_crud_router from api.v1.schemas.users import UserBase, UserResponse, UserUpdate -from database import delete_user_data, get_servers +from database import async_session_maker, delete_user_data, get_servers from database.models import Key, User from handlers.keys.operations import delete_key_from_cluster from logger import logger @@ -33,18 +33,24 @@ async def delete_user( result = await session.execute(select(Key.email, Key.client_id).where(Key.tg_id == tg_id)) key_records = result.all() - async def delete_keys_from_servers(): - try: - servers = await get_servers(session=session) - tasks = [] - for email, client_id in key_records: - for cluster_id in servers: - tasks.append(delete_key_from_cluster(cluster_id, email, client_id, session)) - await asyncio.gather(*tasks, return_exceptions=True) - except Exception as e: - logger.error(f"[DELETE] Ошибка при удалении ключей с серверов для пользователя {tg_id}: {e}") + async with async_session_maker() as s: + servers = await get_servers(session=s) + cluster_ids = list(servers.keys()) + + async def _delete_one(cluster_id: str, email: str, client_id: str): + async with async_session_maker() as s: + await delete_key_from_cluster(cluster_id, email, client_id, s) + + try: + tasks = [ + _delete_one(cluster_id, email, client_id) + for email, client_id in key_records + for cluster_id in cluster_ids + ] + await asyncio.gather(*tasks, return_exceptions=True) + except Exception as e: + logger.error(f"[DELETE] Ошибка при удалении ключей с серверов для пользователя {tg_id}: {e}") - await delete_keys_from_servers() await delete_user_data(session, tg_id) return {"detail": f"Пользователь {tg_id} и его ключи успешно удалены."} diff --git a/api/v2/routes/management.py b/api/v2/routes/management.py index cf8927ab..71c36517 100644 --- a/api/v2/routes/management.py +++ b/api/v2/routes/management.py @@ -18,6 +18,7 @@ from api.depends import get_session, verify_identity_admin, verify_identity_admi from database import async_session_maker from config import API_TOKEN, BOT_SERVICE from core.bootstrap import MANAGEMENT_CONFIG +from core.executor import get_thread_pool from core.settings.management_config import update_management_config from database.models import Key, Server, User from handlers.admin.sender.sender_service import BroadcastService @@ -63,7 +64,14 @@ async def _restart_bot() -> None: parent = psutil.Process(os.getpid()).parent() is_systemd = parent and "systemd" in parent.name().lower() if is_systemd: - subprocess.run(["sudo", "systemctl", "restart", BOT_SERVICE], check=True) + loop = asyncio.get_running_loop() + await loop.run_in_executor( + get_thread_pool(), + lambda: subprocess.run( + ["sudo", "systemctl", "restart", BOT_SERVICE], + check=True, + ), + ) else: python_exe = sys.executable script_path = os.path.abspath(sys.argv[0]) @@ -191,6 +199,7 @@ async def launch_broadcast( raise HTTPException(status_code=400, detail=f"Message too long. Max {max_len} symbols") async with async_session_maker() as session: tg_ids, total_users = await get_recipients(session, payload.send_to, (payload.cluster_name or None)) + await session.commit() if not tg_ids: return {"success": False, "message": "No recipients found", "stats": {"total_messages": 0}} bot = _get_broadcast_bot() diff --git a/api/v2/routes/settings.py b/api/v2/routes/settings.py index 53a12eb5..ae407cd6 100644 --- a/api/v2/routes/settings.py +++ b/api/v2/routes/settings.py @@ -7,7 +7,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from api.depends import get_session, verify_identity_admin from api.v2.schemas import SettingResponse, SettingUpsert -from database import settings_cache +from database.settings_cache import settings_cache from core.settings.buttons_config import BUTTONS_CONFIG, update_buttons_config from core.settings.modes_config import MODES_CONFIG, update_modes_config from core.settings.money_config import MONEY_CONFIG, update_money_config diff --git a/api/v2/routes/users.py b/api/v2/routes/users.py index fba39547..0f334090 100644 --- a/api/v2/routes/users.py +++ b/api/v2/routes/users.py @@ -7,7 +7,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from api.depends import get_session, verify_identity_admin from api.v2.schemas import UserBase, UserResponse, UserUpdate from api.v2.base_crud import generate_crud_router -from database import delete_user_data, get_servers +from database import async_session_maker, delete_user_data, get_servers from database.models import Key, User from handlers.keys.operations import delete_key_from_cluster from logger import logger @@ -33,18 +33,24 @@ async def delete_user( result = await session.execute(select(Key.email, Key.client_id).where(Key.tg_id == tg_id)) key_records = result.all() - async def delete_keys_from_servers(): - try: - servers = await get_servers(session=session) - tasks = [] - for email, client_id in key_records: - for cluster_id in servers: - tasks.append(delete_key_from_cluster(cluster_id, email, client_id, session)) - await asyncio.gather(*tasks, return_exceptions=True) - except Exception as e: - logger.error(f"[DELETE] Ошибка при удалении ключей с серверов для пользователя {tg_id}: {e}") + async with async_session_maker() as s: + servers = await get_servers(session=s) + cluster_ids = list(servers.keys()) + + async def _delete_one(cluster_id: str, email: str, client_id: str): + async with async_session_maker() as s: + await delete_key_from_cluster(cluster_id, email, client_id, s) + + try: + tasks = [ + _delete_one(cluster_id, email, client_id) + for email, client_id in key_records + for cluster_id in cluster_ids + ] + await asyncio.gather(*tasks, return_exceptions=True) + except Exception as e: + logger.error(f"[DELETE] Ошибка при удалении ключей с серверов для пользователя {tg_id}: {e}") - await delete_keys_from_servers() await delete_user_data(session, tg_id) return {"detail": f"Пользователь {tg_id} и его ключи успешно удалены."} except Exception as e: diff --git a/bot.py b/bot.py index 43d5e8dd..1ec1613e 100644 --- a/bot.py +++ b/bot.py @@ -1,3 +1,6 @@ +import os +from importlib import import_module + from aiogram import Bot, Dispatcher from aiogram.client.default import DefaultBotProperties from aiogram.enums import ParseMode @@ -14,6 +17,17 @@ apply_button_icons_patch() bot = Bot(token=API_TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML)) storage = MemoryStorage() +redis_url = os.getenv("REDIS_URL", "redis://127.0.0.1:6379/0") + +try: + RedisStorage = import_module("aiogram.fsm.storage.redis").RedisStorage + redis_from_url = import_module("redis.asyncio").from_url + + redis = redis_from_url(redis_url, encoding="utf-8", decode_responses=True) + storage = RedisStorage(redis=redis) +except Exception: + storage = MemoryStorage() + dp = Dispatcher(bot=bot, storage=storage) dp.include_router(modules_hub) diff --git a/core/app.cpython-312-x86_64-linux-gnu.so b/core/app.cpython-312-x86_64-linux-gnu.so index e80a0373713111281e3c114e7fcd2095f45dfea3..f9e8a091c2e51999962644c355f6d17a5de2facb 100644 GIT binary patch literal 544760 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

3D#A(&l)KvCCY9gL7NnV{^595l`6s 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
  • W8 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

    ;Ljwc2rM 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 z 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 $BrA>F$YQ)X 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 CR(l%& diff --git a/core/bootstrap.py b/core/bootstrap.py index 1487260d..014318a4 100644 --- a/core/bootstrap.py +++ b/core/bootstrap.py @@ -1,4 +1,5 @@ -from database import async_session_maker, settings_cache +from database import async_session_maker +from database.settings_cache import settings_cache from database.db import warm_pool from database.tariffs import initialize_all_tariff_weights @@ -9,6 +10,7 @@ from .settings.money_config import MONEY_CONFIG, load_money_config, update_money from .settings.notifications_config import NOTIFICATIONS_CONFIG, load_notifications_config, update_notifications_config from .settings.payments_config import PAYMENTS_CONFIG, load_payments_config, update_payments_config from .settings.providers_order_config import PROVIDERS_ORDER, load_providers_order, update_providers_order +from .settings.runtime_sync import publish_runtime_snapshot from .settings.tariffs_config import TARIFFS_CONFIG, load_tariffs_config, update_tariffs_config @@ -26,3 +28,4 @@ async def bootstrap() -> None: await load_tariffs_config(session) await session.commit() await settings_cache.load(session) + await publish_runtime_snapshot() diff --git a/core/cache_config.py b/core/cache_config.py new file mode 100644 index 00000000..9fbd97fb --- /dev/null +++ b/core/cache_config.py @@ -0,0 +1,49 @@ +UPDATE_STALE_AGE_SEC = 60 + +SUBSCRIPTION_CACHE_SUBSCRIBED_MAXSIZE = 200_000 +SUBSCRIPTION_CACHE_SUBSCRIBED_TTL_SEC = 300 +SUBSCRIPTION_CACHE_UNSUBSCRIBED_MAXSIZE = 100_000 +SUBSCRIPTION_CACHE_UNSUBSCRIBED_TTL_SEC = 60 + +CONCURRENCY_REJECT_NOTICE_CACHE_MAXSIZE = 100_000 +CONCURRENCY_REJECT_NOTICE_TTL_SEC = 5 + +THROTTLE_CACHE_MAXSIZE = 50_000 +THROTTLE_CACHE_TTL_SEC = 1.0 +THROTTLE_NOTICE_CACHE_MAXSIZE = 50_000 +THROTTLE_NOTICE_TTL_SEC = 1.0 + +START_UTM_EXISTS_CACHE_MAXSIZE = 20_000 +START_UTM_EXISTS_TTL_SEC = 300 + +USER_SNAPSHOT_CACHE_MAXSIZE = 150_000 +USER_SNAPSHOT_CACHE_TTL_SEC = 30 +USER_EXISTS_CACHE_MAXSIZE = 150_000 +USER_EXISTS_CACHE_TTL_SEC = 60 + +BAN_CACHE_MAXSIZE = 50_000 +BAN_CACHE_TTL_SEC = 30 + +DIRECT_START_USER_EXISTS_CACHE_MAXSIZE = 50_000 +DIRECT_START_USER_EXISTS_CACHE_TTL_SEC = 20 + +ADMIN_CACHE_MAXSIZE = 10_000 +ADMIN_CACHE_TTL_SEC = 60 + +REMNAWAVE_SERVER_CACHE_MAXSIZE = 50_000 +REMNAWAVE_SERVER_CACHE_TTL_SEC = 300 +REMNAWAVE_PROFILE_CACHE_MAXSIZE = 200_000 +REMNAWAVE_PROFILE_CACHE_TTL_SEC = 20 +REMNAWAVE_PROFILE_TIMEOUT_SEC = 3.0 +REMNAWAVE_ACTION_TIMEOUT_SEC = 5.0 +REMNAWAVE_MAX_CONCURRENCY = 20 + +RUNTIME_CONFIG_SYNC_PULL_INTERVAL_SEC = 1.0 +RUNTIME_CONFIG_SYNC_TTL_SEC = 86_400 + +SUBSCRIPTION_RESPONSE_CACHE_TTL_SEC = 20 +SUBSCRIPTION_HANDLER_CONCURRENCY = 80 + +SERVERS_CACHE_TTL_SEC = 60 +TARIFF_BY_ID_CACHE_TTL_SEC = 120 +TARIFFS_FOR_CLUSTER_CACHE_TTL_SEC = 120 diff --git a/core/executor.py b/core/executor.py new file mode 100644 index 00000000..34230ef8 --- /dev/null +++ b/core/executor.py @@ -0,0 +1,73 @@ +import atexit +import signal +import multiprocessing +from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor + +from logger import logger + +_thread_pool: ThreadPoolExecutor | None = None +_process_pool: ProcessPoolExecutor | None = None + + +def _atexit_shutdown_pools() -> None: + """Очистка пулов при выходе из процесса (в т.ч. по atexit), уменьшает предупреждения resource_tracker.""" + shutdown_process_pool() + shutdown_thread_pool() + + +class _IgnoreSIGINTProcess(multiprocessing.Process): + """Процесс, игнорирующий SIGINT в воркере, чтобы Ctrl+C не обрывал queue.get() с трейсбеком.""" + + def run(self) -> None: + signal.signal(signal.SIGINT, signal.SIG_IGN) + super().run() + + +def get_thread_pool() -> ThreadPoolExecutor: + """Возвращает общий пул потоков (создаёт при первом вызове).""" + global _thread_pool + if _thread_pool is None: + from config import EXECUTOR_POOL_SIZE + size = max(1, int(EXECUTOR_POOL_SIZE)) + _thread_pool = ThreadPoolExecutor(max_workers=size, thread_name_prefix="bot-thread") + logger.debug("Thread pool started (workers=%s)", size) + return _thread_pool + + +def shutdown_thread_pool() -> None: + """Останавливает пул потоков (вызывать при shutdown приложения).""" + global _thread_pool + if _thread_pool is not None: + _thread_pool.shutdown(wait=True) + _thread_pool = None + logger.debug("Thread pool shut down") + + +def get_process_pool() -> ProcessPoolExecutor: + """ + Возвращает пул процессов для тяжёлых задач (бэкап и т.д.). + Задачи выполняются в отдельных процессах и могут использовать другие ядра CPU. + """ + global _process_pool + if _process_pool is None: + from config import PROCESS_POOL_SIZE + size = max(1, min(int(PROCESS_POOL_SIZE), multiprocessing.cpu_count() or 4)) + ctx = multiprocessing.get_context("spawn") + ctx.Process = _IgnoreSIGINTProcess + _process_pool = ProcessPoolExecutor(max_workers=size, mp_context=ctx) + atexit.register(_atexit_shutdown_pools) + logger.debug("Process pool started (workers=%s)", size) + return _process_pool + + +def shutdown_process_pool() -> None: + """Останавливает пул процессов (вызывать при shutdown приложения).""" + global _process_pool + if _process_pool is not None: + try: + atexit.unregister(_atexit_shutdown_pools) + except Exception: + pass + _process_pool.shutdown(wait=True) + _process_pool = None + logger.debug("Process pool shut down") diff --git a/core/redis_cache.py b/core/redis_cache.py new file mode 100644 index 00000000..5e760b45 --- /dev/null +++ b/core/redis_cache.py @@ -0,0 +1,111 @@ +import json +import os +import time +from importlib import import_module +from typing import Any + +_REDIS_CLIENT = None +_REDIS_UNAVAILABLE_UNTIL = 0.0 +_REDIS_BACKOFF_SEC = 5.0 + + +def _now() -> float: + return time.monotonic() + + +async def _get_redis() -> Any | None: + global _REDIS_CLIENT, _REDIS_UNAVAILABLE_UNTIL + + if _REDIS_CLIENT is not None: + return _REDIS_CLIENT + if _REDIS_UNAVAILABLE_UNTIL > _now(): + return None + + try: + redis_url = os.getenv("REDIS_URL", "redis://127.0.0.1:6379/0") + redis_from_url = import_module("redis.asyncio").from_url + client = redis_from_url(redis_url, encoding="utf-8", decode_responses=True) + await client.ping() + _REDIS_CLIENT = client + return _REDIS_CLIENT + except Exception: + _REDIS_UNAVAILABLE_UNTIL = _now() + _REDIS_BACKOFF_SEC + _REDIS_CLIENT = None + return None + + +def cache_key(prefix: str, *parts: Any) -> str: + tail = ":".join(str(p) for p in parts) + return f"{prefix}:{tail}" if tail else prefix + + +async def cache_get(key: str) -> Any | None: + client = await _get_redis() + if client is None: + return None + try: + raw = await client.get(key) + if raw is None: + return None + return json.loads(raw) + except Exception: + return None + + +async def cache_set(key: str, value: Any, ttl_sec: float) -> bool: + client = await _get_redis() + if client is None: + return False + try: + ttl = max(1, int(ttl_sec)) + await client.set(key, json.dumps(value, ensure_ascii=False), ex=ttl) + return True + except Exception: + return False + + +async def cache_delete(key: str) -> None: + client = await _get_redis() + if client is None: + return + try: + await client.delete(key) + except Exception: + return + + +async def cache_setnx(key: str, value: Any, ttl_sec: float) -> bool: + client = await _get_redis() + if client is None: + return False + try: + ttl = max(1, int(ttl_sec)) + return bool(await client.set(key, json.dumps(value, ensure_ascii=False), ex=ttl, nx=True)) + except Exception: + return False + + +async def cache_incr(key: str, ttl_sec: float) -> int: + client = await _get_redis() + if client is None: + return 1 + try: + value = await client.incr(key) + if value == 1: + await client.expire(key, max(1, int(ttl_sec))) + return int(value) + except Exception: + return 1 + + +async def cache_delete_pattern(pattern: str) -> int: + client = await _get_redis() + if client is None: + return 0 + deleted = 0 + try: + async for key in client.scan_iter(match=pattern, count=200): + deleted += int(await client.delete(key)) + except Exception: + return deleted + return deleted diff --git a/core/settings/buttons_config.py b/core/settings/buttons_config.py index 285ebe6d..fe6070a6 100644 --- a/core/settings/buttons_config.py +++ b/core/settings/buttons_config.py @@ -3,13 +3,15 @@ from sqlalchemy.ext.asyncio import AsyncSession from database.models import Setting -from database import settings_cache +from database.settings_cache import settings_cache from ..defaults import DEFAULT_BUTTONS_CONFIG +from .runtime_sync import publish_runtime_config, register_runtime_config BUTTONS_CONFIG: dict[str, bool] = DEFAULT_BUTTONS_CONFIG.copy() BUTTONS_CONFIG.setdefault("ANDROID_TV_BUTTON_ENABLE", False) BUTTONS_CONFIG.setdefault("COUPON_BUTTON_ENABLE", True) +register_runtime_config("BUTTONS_CONFIG", BUTTONS_CONFIG) async def load_buttons_config(session: AsyncSession) -> None: @@ -65,3 +67,4 @@ async def update_buttons_config(session: AsyncSession, new_values: dict[str, boo BUTTONS_CONFIG.clear() BUTTONS_CONFIG.update(buttons_config) settings_cache.update("BUTTONS_CONFIG", buttons_config) + await publish_runtime_config("BUTTONS_CONFIG", buttons_config) diff --git a/core/settings/management_config.py b/core/settings/management_config.py index 3d9df4f0..e727619d 100644 --- a/core/settings/management_config.py +++ b/core/settings/management_config.py @@ -5,12 +5,14 @@ from sqlalchemy.ext.asyncio import AsyncSession from database.models import Setting -from database import settings_cache +from database.settings_cache import settings_cache from ..defaults import DEFAULT_MANAGEMENT_CONFIG +from .runtime_sync import publish_runtime_config, register_runtime_config MANAGEMENT_CONFIG: dict[str, Any] = DEFAULT_MANAGEMENT_CONFIG.copy() MANAGEMENT_SETTING_KEY = "MANAGEGENT_CONFIG" +register_runtime_config(MANAGEMENT_SETTING_KEY, MANAGEMENT_CONFIG) async def load_management_config(session: AsyncSession) -> None: @@ -60,3 +62,4 @@ async def update_management_config(session: AsyncSession, new_values: dict[str, MANAGEMENT_CONFIG.clear() MANAGEMENT_CONFIG.update(management_config) settings_cache.update(MANAGEMENT_SETTING_KEY, management_config) + await publish_runtime_config(MANAGEMENT_SETTING_KEY, management_config) diff --git a/core/settings/modes_config.py b/core/settings/modes_config.py index f82fad80..6735f0db 100644 --- a/core/settings/modes_config.py +++ b/core/settings/modes_config.py @@ -3,11 +3,13 @@ from sqlalchemy.ext.asyncio import AsyncSession from database.models import Setting -from database import settings_cache +from database.settings_cache import settings_cache from ..defaults import DEFAULT_MODES_CONFIG +from .runtime_sync import publish_runtime_config, register_runtime_config MODES_CONFIG: dict[str, bool] = DEFAULT_MODES_CONFIG.copy() +register_runtime_config("MODES_CONFIG", MODES_CONFIG) async def load_modes_config(session: AsyncSession) -> None: @@ -57,3 +59,4 @@ async def update_modes_config(session: AsyncSession, new_values: dict[str, bool] MODES_CONFIG.clear() MODES_CONFIG.update(modes_config) settings_cache.update("MODES_CONFIG", modes_config) + await publish_runtime_config("MODES_CONFIG", modes_config) diff --git a/core/settings/money_config.py b/core/settings/money_config.py index 53cfc0a8..446012bf 100644 --- a/core/settings/money_config.py +++ b/core/settings/money_config.py @@ -5,11 +5,13 @@ from sqlalchemy.ext.asyncio import AsyncSession from database.models import Setting -from database import settings_cache +from database.settings_cache import settings_cache from ..defaults import DEFAULT_MONEY_CONFIG +from .runtime_sync import publish_runtime_config, register_runtime_config MONEY_CONFIG: dict[str, Any] = DEFAULT_MONEY_CONFIG.copy() +register_runtime_config("MONEY_CONFIG", MONEY_CONFIG) def get_currency_mode() -> tuple[str, bool]: @@ -75,3 +77,4 @@ async def update_money_config(session: AsyncSession, new_values: dict[str, Any]) MONEY_CONFIG.clear() MONEY_CONFIG.update(money_config) settings_cache.update("MONEY_CONFIG", money_config) + await publish_runtime_config("MONEY_CONFIG", money_config) diff --git a/core/settings/notifications_config.py b/core/settings/notifications_config.py index d3b94af7..42c2e69b 100644 --- a/core/settings/notifications_config.py +++ b/core/settings/notifications_config.py @@ -5,11 +5,13 @@ from sqlalchemy.ext.asyncio import AsyncSession from database.models import Setting -from database import settings_cache +from database.settings_cache import settings_cache from ..defaults import DEFAULT_NOTIFICATIONS_CONFIG +from .runtime_sync import publish_runtime_config, register_runtime_config NOTIFICATIONS_CONFIG: dict[str, Any] = DEFAULT_NOTIFICATIONS_CONFIG.copy() +register_runtime_config("NOTIFICATIONS_CONFIG", NOTIFICATIONS_CONFIG) async def load_notifications_config(session: AsyncSession) -> None: @@ -59,3 +61,4 @@ async def update_notifications_config(session: AsyncSession, new_values: dict[st NOTIFICATIONS_CONFIG.clear() NOTIFICATIONS_CONFIG.update(notifications_config) settings_cache.update("NOTIFICATIONS_CONFIG", notifications_config) + await publish_runtime_config("NOTIFICATIONS_CONFIG", notifications_config) diff --git a/core/settings/payments_config.py b/core/settings/payments_config.py index 48402fc5..c7e16b0b 100644 --- a/core/settings/payments_config.py +++ b/core/settings/payments_config.py @@ -3,11 +3,13 @@ from sqlalchemy.ext.asyncio import AsyncSession from database.models import Setting -from database import settings_cache +from database.settings_cache import settings_cache from ..defaults import DEFAULT_PAYMENTS_CONFIG +from .runtime_sync import publish_runtime_config, register_runtime_config PAYMENTS_CONFIG: dict[str, bool] = DEFAULT_PAYMENTS_CONFIG.copy() +register_runtime_config("PAYMENTS_CONFIG", PAYMENTS_CONFIG) async def load_payments_config(session: AsyncSession) -> None: @@ -57,3 +59,4 @@ async def update_payments_config(session: AsyncSession, new_values: dict[str, bo PAYMENTS_CONFIG.clear() PAYMENTS_CONFIG.update(payments_config) settings_cache.update("PAYMENTS_CONFIG", payments_config) + await publish_runtime_config("PAYMENTS_CONFIG", payments_config) diff --git a/core/settings/providers_order_config.py b/core/settings/providers_order_config.py index 9570da28..92b0a912 100644 --- a/core/settings/providers_order_config.py +++ b/core/settings/providers_order_config.py @@ -3,9 +3,11 @@ from sqlalchemy.ext.asyncio import AsyncSession from database.models import Setting -from database import settings_cache +from database.settings_cache import settings_cache +from .runtime_sync import publish_runtime_config, register_runtime_config PROVIDERS_ORDER: dict[str, int] = {} +register_runtime_config("PROVIDERS_ORDER", PROVIDERS_ORDER) async def load_providers_order(session: AsyncSession) -> None: @@ -39,3 +41,4 @@ async def update_providers_order(session: AsyncSession, new_order: dict[str, int PROVIDERS_ORDER.clear() PROVIDERS_ORDER.update(new_order) settings_cache.update("PROVIDERS_ORDER", new_order) + await publish_runtime_config("PROVIDERS_ORDER", new_order) diff --git a/core/settings/runtime_sync.py b/core/settings/runtime_sync.py new file mode 100644 index 00000000..286f830a --- /dev/null +++ b/core/settings/runtime_sync.py @@ -0,0 +1,98 @@ +from __future__ import annotations + +import asyncio +import time +from typing import Any + +from core.cache_config import ( + RUNTIME_CONFIG_SYNC_PULL_INTERVAL_SEC, + RUNTIME_CONFIG_SYNC_TTL_SEC, +) +from core.redis_cache import cache_get, cache_key, cache_set + +_RUNTIME_CONFIGS_KEY = cache_key("runtime_configs") +_REGISTRY: dict[str, dict[str, Any]] = {} +_LOCAL_VERSION = 0.0 +_LAST_PULL_MONOTONIC = 0.0 +_PULL_LOCK = asyncio.Lock() + + +def register_runtime_config(name: str, config_ref: dict[str, Any]) -> None: + _REGISTRY[name] = config_ref + + +def _snapshot_from_registry() -> dict[str, dict[str, Any]]: + return {name: dict(config_ref) for name, config_ref in _REGISTRY.items()} + + +def _apply_runtime_config(name: str, raw_value: Any) -> None: + target = _REGISTRY.get(name) + if target is None or not isinstance(raw_value, dict): + return + target.clear() + target.update(raw_value) + + +async def publish_runtime_snapshot() -> None: + global _LOCAL_VERSION + version = time.time() + payload = { + "version": version, + "configs": _snapshot_from_registry(), + } + await cache_set(_RUNTIME_CONFIGS_KEY, payload, RUNTIME_CONFIG_SYNC_TTL_SEC) + _LOCAL_VERSION = max(_LOCAL_VERSION, float(version)) + + +async def publish_runtime_config(name: str, config_value: dict[str, Any]) -> None: + global _LOCAL_VERSION + if not isinstance(config_value, dict): + return + + merged_configs: dict[str, dict[str, Any]] = {} + cached = await cache_get(_RUNTIME_CONFIGS_KEY) + if isinstance(cached, dict): + raw_configs = cached.get("configs") + if isinstance(raw_configs, dict): + for key, value in raw_configs.items(): + if isinstance(value, dict): + merged_configs[key] = dict(value) + + merged_configs[name] = dict(config_value) + version = time.time() + payload = {"version": version, "configs": merged_configs} + await cache_set(_RUNTIME_CONFIGS_KEY, payload, RUNTIME_CONFIG_SYNC_TTL_SEC) + _LOCAL_VERSION = max(_LOCAL_VERSION, float(version)) + + +async def maybe_sync_runtime_configs(force: bool = False) -> bool: + global _LOCAL_VERSION, _LAST_PULL_MONOTONIC + now = time.monotonic() + if not force and (now - _LAST_PULL_MONOTONIC) < RUNTIME_CONFIG_SYNC_PULL_INTERVAL_SEC: + return False + + async with _PULL_LOCK: + now = time.monotonic() + if not force and (now - _LAST_PULL_MONOTONIC) < RUNTIME_CONFIG_SYNC_PULL_INTERVAL_SEC: + return False + _LAST_PULL_MONOTONIC = now + + payload = await cache_get(_RUNTIME_CONFIGS_KEY) + if not isinstance(payload, dict): + return False + + try: + remote_version = float(payload.get("version") or 0.0) + except (TypeError, ValueError): + remote_version = 0.0 + if remote_version <= _LOCAL_VERSION: + return False + + raw_configs = payload.get("configs") + if not isinstance(raw_configs, dict): + return False + + for name, raw_value in raw_configs.items(): + _apply_runtime_config(name, raw_value) + _LOCAL_VERSION = remote_version + return True diff --git a/core/settings/tariffs_config.py b/core/settings/tariffs_config.py index 1e251965..9a3865cc 100644 --- a/core/settings/tariffs_config.py +++ b/core/settings/tariffs_config.py @@ -6,7 +6,8 @@ from sqlalchemy.ext.asyncio import AsyncSession from database.models import Setting -from database import settings_cache +from database.settings_cache import settings_cache +from .runtime_sync import publish_runtime_config, register_runtime_config TARIFFS_CONFIG: dict[str, Any] = { @@ -14,6 +15,7 @@ TARIFFS_CONFIG: dict[str, Any] = { "KEY_ADDONS_PACK_MODE": "all", "KEY_ADDONS_PRICE_BASE_MODE": "current", } +register_runtime_config("TARIFFS_CONFIG", TARIFFS_CONFIG) async def load_tariffs_config(session: AsyncSession) -> None: @@ -65,6 +67,7 @@ async def update_tariffs_config(session: AsyncSession, new_values: dict[str, Any TARIFFS_CONFIG.clear() TARIFFS_CONFIG.update(tariffs_config) settings_cache.update("TARIFFS_CONFIG", tariffs_config) + await publish_runtime_config("TARIFFS_CONFIG", tariffs_config) def calc_extra_devices_price(tariff: dict[str, Any], device_limit: int) -> int: diff --git a/database/db.py b/database/db.py index 45374aa1..0ebd7e2c 100644 --- a/database/db.py +++ b/database/db.py @@ -5,10 +5,11 @@ from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_asyn from sqlalchemy.orm import declarative_base from config import DATABASE_URL, DB_MAX_OVERFLOW, DB_POOL_SIZE +from core.cache_config import UPDATE_STALE_AGE_SEC CONCURRENT_UPDATES_LIMIT = DB_POOL_SIZE + DB_MAX_OVERFLOW -MAX_UPDATE_AGE_SEC = 15 +MAX_UPDATE_AGE_SEC = UPDATE_STALE_AGE_SEC engine = create_async_engine( DATABASE_URL, diff --git a/database/models.py b/database/models.py index 350c499d..877d2fa6 100644 --- a/database/models.py +++ b/database/models.py @@ -86,7 +86,7 @@ class User(DictLikeMixin, Base): class Key(DictLikeMixin, Base): __tablename__ = "keys" - tg_id = Column(BigInteger, ForeignKey("users.tg_id"), nullable=False) + tg_id = Column(BigInteger, ForeignKey("users.tg_id"), nullable=False, index=True) client_id = Column(String, primary_key=True) email = Column(String, unique=True) created_at = Column(BigInteger) diff --git a/database/notifications.py b/database/notifications.py index de23fd05..2b0f1fd7 100644 --- a/database/notifications.py +++ b/database/notifications.py @@ -1,6 +1,6 @@ from datetime import datetime, timedelta -from sqlalchemy import and_, delete, func, select +from sqlalchemy import and_, delete, func, select, tuple_ from sqlalchemy.dialects.postgresql import insert from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.ext.asyncio import AsyncSession @@ -56,6 +56,39 @@ async def check_notification_time(session: AsyncSession, tg_id: int, notificatio return datetime.utcnow() - last_time > timedelta(hours=hours) +async def check_notification_time_bulk( + session: AsyncSession, + items: list[tuple[int, str]], + hours: int, +) -> set[tuple[int, str]]: + """ + За один запрос определяет, кому из (tg_id, notification_type) можно слать уведомление + (прошло больше hours с последней отправки или не слали никогда). + Возвращает множество пар (tg_id, notification_type), которым можно слать. + """ + if not items: + return set() + now = datetime.utcnow() + threshold = now - timedelta(hours=hours) + stmt = select( + Notification.tg_id, + Notification.notification_type, + Notification.last_notification_time, + ).where(tuple_(Notification.tg_id, Notification.notification_type).in_(items)) + result = await session.execute(stmt) + rows = result.all() + can_notify = set() + found = set() + for row in rows: + found.add((row.tg_id, row.notification_type)) + if row.last_notification_time is None or row.last_notification_time < threshold: + can_notify.add((row.tg_id, row.notification_type)) + for pair in items: + if pair not in found: + can_notify.add(pair) + return can_notify + + async def get_last_notification_time(session: AsyncSession, tg_id: int, notification_type: str) -> int | None: stmt = select(Notification.last_notification_time).where( Notification.tg_id == tg_id, Notification.notification_type == notification_type diff --git a/database/servers.py b/database/servers.py index c885e3e4..b3d4449f 100644 --- a/database/servers.py +++ b/database/servers.py @@ -2,10 +2,16 @@ from sqlalchemy import delete, func, insert, select, update from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.ext.asyncio import AsyncSession +from core.cache_config import SERVERS_CACHE_TTL_SEC +from core.redis_cache import cache_delete_pattern, cache_get, cache_key, cache_set from database.models import Key, Server, ServerSpecialgroup, ServerSubgroup, Tariff from logger import logger +async def _invalidate_servers_cache() -> None: + await cache_delete_pattern("servers:*") + + async def create_server( session: AsyncSession, cluster_name: str, @@ -24,6 +30,7 @@ async def create_server( ) await session.execute(stmt) await session.commit() + await _invalidate_servers_cache() logger.info(f"✅ Сервер {server_name} добавлен в кластер {cluster_name}") except SQLAlchemyError as e: logger.error(f"❌ Ошибка при добавлении сервера {server_name}: {e}") @@ -36,6 +43,7 @@ async def delete_server(session: AsyncSession, server_name: str): stmt = delete(Server).where(Server.server_name == server_name) await session.execute(stmt) await session.commit() + await _invalidate_servers_cache() logger.info(f"🗑 Сервер {server_name} удалён") except SQLAlchemyError as e: logger.error(f"❌ Ошибка при удалении сервера {server_name}: {e}") @@ -46,6 +54,11 @@ async def delete_server(session: AsyncSession, server_name: str): async def get_servers(session: AsyncSession, include_enabled: bool = False) -> dict: from handlers.utils import ALLOWED_GROUP_CODES + cache_key_servers = cache_key("servers", int(include_enabled)) + cached = await cache_get(cache_key_servers) + if isinstance(cached, dict): + return cached + try: stmt = select(Server) result = await session.execute(stmt) @@ -97,6 +110,7 @@ async def get_servers(session: AsyncSession, include_enabled: bool = False) -> d "cluster_name": cluster, "server_id": s.id, }) + await cache_set(cache_key_servers, grouped, SERVERS_CACHE_TTL_SEC) return grouped except SQLAlchemyError as e: logger.error(f"Ошибка при получении серверов: {e}") @@ -172,6 +186,7 @@ async def update_server_field(session: AsyncSession, server_name: str, field: st stmt = update(Server).where(Server.server_name == server_name).values(**{field: value}) await session.execute(stmt) await session.commit() + await _invalidate_servers_cache() logger.info(f"✅ Поле {field} сервера {server_name} обновлено на {value}") return True except SQLAlchemyError as e: @@ -197,6 +212,7 @@ async def update_server_name_with_keys(session: AsyncSession, old_name: str, new await session.execute(stmt_keys) await session.commit() + await _invalidate_servers_cache() logger.info(f"✅ Сервер переименован с {old_name} на {new_name}") return True except SQLAlchemyError as e: @@ -256,6 +272,7 @@ async def update_server_cluster(session: AsyncSession, server_name: str, new_clu ) await session.commit() + await _invalidate_servers_cache() logger.info( f"✅ Сервер {server_name} перемещен в кластер {new_cluster} с обновлением тарифной группы и привязок подгрупп" ) diff --git a/database/tariffs.py b/database/tariffs.py index 0346cde5..c590d44f 100644 --- a/database/tariffs.py +++ b/database/tariffs.py @@ -7,10 +7,32 @@ from sqlalchemy import delete, func, insert, select, update from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.ext.asyncio import AsyncSession +from core.cache_config import TARIFF_BY_ID_CACHE_TTL_SEC, TARIFFS_FOR_CLUSTER_CACHE_TTL_SEC +from core.redis_cache import cache_delete, cache_delete_pattern, cache_get, cache_key, cache_set from database.models import Server, Tariff from logger import logger +def _row_to_cache_dict(row_dict: dict) -> dict: + """Делает dict строки БД пригодным для JSON/Redis (datetime → str, убирает _sa_instance_state).""" + out = {} + for k, v in row_dict.items(): + if k.startswith("_"): + continue + if isinstance(v, datetime): + out[k] = v.isoformat() + else: + out[k] = v + return out + + +async def _invalidate_tariff_cache(tariff_id: int | None = None) -> None: + """Сброс кэша тарифов при изменении (по id и списков по кластерам).""" + if tariff_id is not None: + await cache_delete(cache_key("tariff", tariff_id)) + await cache_delete_pattern("tariffs_cluster:*") + + def create_subgroup_hash(subgroup_title: str, group_code: str) -> str: if not subgroup_title: return "" @@ -78,10 +100,18 @@ async def get_tariffs( async def get_tariff_by_id(session: AsyncSession, tariff_id: int): + key = cache_key("tariff", tariff_id) + cached = await cache_get(key) + if isinstance(cached, dict): + return cached try: result = await session.execute(select(Tariff).where(Tariff.id == tariff_id)) tariff = result.scalar_one_or_none() - return dict(tariff.__dict__) if tariff else None + if not tariff: + return None + row = _row_to_cache_dict(dict(tariff.__dict__)) + await cache_set(key, row, TARIFF_BY_ID_CACHE_TTL_SEC) + return row except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при получении тарифа по ID {tariff_id}: {e}") await session.rollback() @@ -89,6 +119,10 @@ async def get_tariff_by_id(session: AsyncSession, tariff_id: int): async def get_tariffs_for_cluster(session: AsyncSession, cluster_name: str): + key = cache_key("tariffs_cluster", cluster_name) + cached = await cache_get(key) + if isinstance(cached, list): + return cached try: server_row = await session.execute( select(Server.tariff_group).where(Server.cluster_name == cluster_name).limit(1) @@ -110,7 +144,9 @@ async def get_tariffs_for_cluster(session: AsyncSession, cluster_name: str): .where(Tariff.group_code == group_code, Tariff.is_active.is_(True)) .order_by(Tariff.sort_order, Tariff.id) ) - return [dict(r.__dict__) for r in result.scalars().all()] + rows = [_row_to_cache_dict(dict(r.__dict__)) for r in result.scalars().all()] + await cache_set(key, rows, TARIFFS_FOR_CLUSTER_CACHE_TTL_SEC) + return rows except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при получении тарифов для кластера {cluster_name}: {e}") return [] @@ -139,6 +175,7 @@ async def create_tariff(session: AsyncSession, data: dict): stmt = insert(Tariff).values(**data).returning(Tariff) result = await session.execute(stmt) await session.commit() + await _invalidate_tariff_cache() return result.scalar_one() except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при создании тарифа: {e}") @@ -153,6 +190,7 @@ async def update_tariff(session: AsyncSession, tariff_id: int, updates: dict): updates["updated_at"] = datetime.utcnow() await session.execute(update(Tariff).where(Tariff.id == tariff_id).values(**updates)) await session.commit() + await _invalidate_tariff_cache(tariff_id) return True except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при обновлении тарифа ID={tariff_id}: {e}") @@ -164,6 +202,7 @@ async def delete_tariff(session: AsyncSession, tariff_id: int): try: await session.execute(delete(Tariff).where(Tariff.id == tariff_id)) await session.commit() + await _invalidate_tariff_cache(tariff_id) return True except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при удалении тарифа ID={tariff_id}: {e}") @@ -193,6 +232,7 @@ async def get_tariff_sort_order(session: AsyncSession, tariff_id: int) -> int: if sort_order is None: await session.execute(update(Tariff).where(Tariff.id == tariff_id).values(sort_order=1)) await session.commit() + await _invalidate_tariff_cache(tariff_id) return 1 return sort_order @@ -209,6 +249,7 @@ async def move_tariff_up(session: AsyncSession, tariff_id: int) -> bool: await session.execute(update(Tariff).where(Tariff.id == tariff_id).values(sort_order=new_order)) await session.commit() + await _invalidate_tariff_cache(tariff_id) return True except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при перемещении тарифа {tariff_id} вверх: {e}") @@ -223,6 +264,7 @@ async def move_tariff_down(session: AsyncSession, tariff_id: int) -> bool: await session.execute(update(Tariff).where(Tariff.id == tariff_id).values(sort_order=new_order)) await session.commit() + await _invalidate_tariff_cache(tariff_id) return True except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при перемещении тарифа {tariff_id} вниз: {e}") @@ -243,6 +285,7 @@ async def initialize_tariff_sort_orders(session: AsyncSession, group_code: str) await session.execute(update(Tariff).where(Tariff.id == tariff.id).values(sort_order=new_sort_order)) await session.commit() + await _invalidate_tariff_cache() return True except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при инициализации sort_order для группы {group_code}: {e}") @@ -262,6 +305,7 @@ async def initialize_all_tariff_weights(session: AsyncSession) -> bool: await session.execute(update(Tariff).where(Tariff.id == tariff.id).values(sort_order=1)) await session.commit() + await _invalidate_tariff_cache() return True except SQLAlchemyError as e: diff --git a/database/users.py b/database/users.py index f666cdb5..990a138b 100644 --- a/database/users.py +++ b/database/users.py @@ -1,11 +1,15 @@ from datetime import datetime -from cachetools import TTLCache from sqlalchemy import delete, exists, func, or_, select, update from sqlalchemy.dialects.postgresql import insert from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.ext.asyncio import AsyncSession +from core.cache_config import ( + USER_EXISTS_CACHE_TTL_SEC, + USER_SNAPSHOT_CACHE_TTL_SEC, +) +from core.redis_cache import cache_delete, cache_get, cache_key, cache_set from database.models import ( BlockedUser, CouponUsage, @@ -20,12 +24,15 @@ from database.models import ( ) from logger import logger -_SNAPSHOT_CACHE: TTLCache[int, tuple[int, int]] = TTLCache(maxsize=150_000, ttl=30) -_EXISTS_CACHE: TTLCache[int, bool] = TTLCache(maxsize=150_000, ttl=60) - def invalidate_user_snapshot(tg_id: int) -> None: - _SNAPSHOT_CACHE.pop(tg_id, None) + import asyncio + + try: + loop = asyncio.get_running_loop() + loop.create_task(cache_delete(cache_key("user_snapshot", tg_id))) + except RuntimeError: + return async def add_user( @@ -60,7 +67,7 @@ async def add_user( return False if commit: await session.commit() - _EXISTS_CACHE[tg_id] = True + await cache_set(cache_key("user_exists", tg_id), True, USER_EXISTS_CACHE_TTL_SEC) logger.info(f"[DB] Новый пользователь добавлен: {tg_id} (source: {source_code})") return True except SQLAlchemyError as e: @@ -90,14 +97,13 @@ async def update_balance(session: AsyncSession, tg_id: int, amount: float) -> No async def check_user_exists(session: AsyncSession, tg_id: int) -> bool: - try: - return _EXISTS_CACHE[tg_id] - except KeyError: - pass + cached = await cache_get(cache_key("user_exists", tg_id)) + if isinstance(cached, bool): + return cached stmt = select(exists().where(User.tg_id == tg_id)) result = await session.execute(stmt) value = result.scalar() - _EXISTS_CACHE[tg_id] = value + await cache_set(cache_key("user_exists", tg_id), bool(value), USER_EXISTS_CACHE_TTL_SEC) return value @@ -173,7 +179,7 @@ async def upsert_user( if row is None: return None await session.commit() - _EXISTS_CACHE[tg_id] = True + await cache_set(cache_key("user_exists", tg_id), True, USER_EXISTS_CACHE_TTL_SEC) return dict(row) res = await session.execute( @@ -203,7 +209,7 @@ async def upsert_user( ) row = res.mappings().one() await session.commit() - _EXISTS_CACHE[tg_id] = True + await cache_set(cache_key("user_exists", tg_id), True, USER_EXISTS_CACHE_TTL_SEC) return dict(row) except SQLAlchemyError as e: logger.error(f"[DB] Ошибка при UPSERT пользователя {tg_id}: {e}") @@ -213,7 +219,6 @@ async def upsert_user( async def delete_user_data(session: AsyncSession, tg_id: int): try: - # Local import breaks circular dependency with database.keys <-> database.users from database.keys import delete_key await session.execute(delete(Notification).where(Notification.tg_id == tg_id)) @@ -246,17 +251,18 @@ async def mark_trial_extended(tg_id: int, session: AsyncSession): async def get_user_snapshot(session: AsyncSession, tg_id: int) -> tuple[int, int] | None: - try: - return _SNAPSHOT_CACHE[tg_id] - except KeyError: - pass + cached = await cache_get(cache_key("user_snapshot", tg_id)) + if isinstance(cached, list) and len(cached) == 2: + return (int(cached[0]), int(cached[1])) + if isinstance(cached, tuple) and len(cached) == 2: + return (int(cached[0]), int(cached[1])) keys_count_sq = select(func.count(Key.client_id)).where(Key.tg_id == tg_id).scalar_subquery() res = await session.execute(select(func.coalesce(User.trial, 0), keys_count_sq).where(User.tg_id == tg_id)) row = res.first() if row is None: return None value = (int(row[0]), int(row[1])) - _SNAPSHOT_CACHE[tg_id] = value + await cache_set(cache_key("user_snapshot", tg_id), [value[0], value[1]], USER_SNAPSHOT_CACHE_TTL_SEC) return value diff --git a/docker-compose.yml b/docker-compose.yml index 0b6610b8..0c238056 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,32 @@ services: build: . restart: unless-stopped network_mode: host + depends_on: + redis: + condition: service_healthy + environment: + REDIS_URL: redis://127.0.0.1:6379/0 + BACK_DIR: /app/backups volumes: - /:/host:ro + - backups_data:/app/backups + + redis: + image: redis:7-alpine + container_name: solobot-redis + restart: unless-stopped + command: ["redis-server", "--appendonly", "yes", "--maxmemory", "256mb", "--maxmemory-policy", "allkeys-lru"] + ports: + - "6379:6379" + volumes: + - redis_data:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 5s + timeout: 3s + retries: 5 + +volumes: + redis_data: + backups_data: diff --git a/filters/admin.py b/filters/admin.py index 23b1a5f2..7d9da03f 100644 --- a/filters/admin.py +++ b/filters/admin.py @@ -42,6 +42,7 @@ class IsAdminFilter(BaseFilter): is_admin = admin is not None or user_id in admin_ids is_super = admin.role != "moderator" if admin else (user_id in admin_ids) _set_cached_admin(user_id, is_admin, is_super) + await session.commit() return is_admin except (Exception,): return False @@ -62,9 +63,11 @@ class IsSuperAdminFilter(BaseFilter): admin = (await session.execute(select(Admin).where(Admin.tg_id == user_id))).scalar_one_or_none() if not admin: _set_cached_admin(user_id, False, False) + await session.commit() return False is_super = admin.role != "moderator" _set_cached_admin(user_id, True, is_super) + await session.commit() return is_super except (Exception,): return False diff --git a/handlers/admin/clusters/cluster_manage.py b/handlers/admin/clusters/cluster_manage.py index 7eccd54e..842d1676 100644 --- a/handlers/admin/clusters/cluster_manage.py +++ b/handlers/admin/clusters/cluster_manage.py @@ -198,6 +198,7 @@ async def handle_days_input(message: Message, state: FSMContext, session: AsyncS f"✅ Время подписки продлено на {days} дней для {affected} пользователей в кластере {cluster_name}." ) else: + await session.release_early() for key in keys: new_expiry = key.expiry_time + add_ms diff --git a/handlers/admin/restart/restart_handler.py b/handlers/admin/restart/restart_handler.py index 95dd6a4c..88b79175 100644 --- a/handlers/admin/restart/restart_handler.py +++ b/handlers/admin/restart/restart_handler.py @@ -6,6 +6,7 @@ import sys import psutil from aiogram import F, Router +from core.executor import get_thread_pool from aiogram.types import CallbackQuery from filters.admin import IsAdminFilter @@ -32,9 +33,13 @@ async def restart_bot(): is_systemd = parent and "systemd" in parent.name().lower() if is_systemd: - subprocess.run( - ["sudo", "systemctl", "restart", "bot.service"], - check=True, + loop = asyncio.get_running_loop() + await loop.run_in_executor( + get_thread_pool(), + lambda: subprocess.run( + ["sudo", "systemctl", "restart", "bot.service"], + check=True, + ), ) else: python_exe = sys.executable diff --git a/handlers/admin/users/users_hwid.py b/handlers/admin/users/users_hwid.py index fbfa4e72..5dac73e6 100644 --- a/handlers/admin/users/users_hwid.py +++ b/handlers/admin/users/users_hwid.py @@ -2,10 +2,13 @@ from aiogram import F, Router, types from aiogram.types import CallbackQuery from sqlalchemy.ext.asyncio import AsyncSession -from config import REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD -from database import get_client_id_by_email, get_servers +from panels.remnawave_runtime import ( + invalidate_remnawave_profile, + resolve_remnawave_api_url, + with_remnawave_api, +) +from database import get_client_id_by_email from filters.admin import IsAdminFilter -from panels.remnawave import RemnawaveAPI from .keyboard import AdminUserEditorCallback, build_editor_kb, build_hwid_menu_kb @@ -30,30 +33,25 @@ async def handle_hwid_menu( await callback_query.message.edit_text("🚫 Не удалось найти client_id по email.") return - servers = await get_servers(session=session) - remna_server = None - for cluster_servers in servers.values(): - for server in cluster_servers: - if server.get("panel_type", "") == "remnawave": - remna_server = server - break - if remna_server: - break - - if not remna_server: + remna_api_url = await resolve_remnawave_api_url(session, "", fallback_any=True) + if not remna_api_url: await callback_query.message.edit_text( "🚫 Нет доступного сервера Remnawave.", reply_markup=build_editor_kb(tg_id), ) return - api = RemnawaveAPI(remna_server["api_url"]) - if not await api.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD): + async def _fetch_info_and_devices(api): + user_info = await api.get_user_by_uuid(client_id) + devices = await api.get_user_hwid_devices(client_id) + return user_info, devices + + result = await with_remnawave_api(session, "", _fetch_info_and_devices, fallback_any=True, timeout_sec=8.0) + if result is None: await callback_query.message.edit_text("❌ Ошибка авторизации в Remnawave.") return - user_info = await api.get_user_by_uuid(client_id) - devices = await api.get_user_hwid_devices(client_id) + user_info, devices = result status_emoji = "🟢" status_text = "Онлайн" @@ -131,42 +129,44 @@ async def handle_hwid_reset( await callback_query.message.edit_text("🚫 Не удалось найти client_id по email.") return - servers = await get_servers(session=session) - remna_server = None - for cluster_servers in servers.values(): - for server in cluster_servers: - if server.get("panel_type", "") == "remnawave": - remna_server = server - break - if remna_server: - break - - if not remna_server: + remna_api_url = await resolve_remnawave_api_url(session, "", fallback_any=True) + if not remna_api_url: await callback_query.message.edit_text( "🚫 Нет доступного сервера Remnawave.", reply_markup=build_editor_kb(tg_id), ) return - api = RemnawaveAPI(remna_server["api_url"]) - if not await api.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD): + async def _reset_devices(api): + devices = await api.get_user_hwid_devices(client_id) + if not devices: + return 0, 0 + deleted = 0 + for device in devices: + if await api.delete_user_hwid_device(client_id, device["hwid"]): + deleted += 1 + return len(devices), deleted + + reset_result = await with_remnawave_api(session, "", _reset_devices, fallback_any=True, timeout_sec=12.0) + if reset_result is None: await callback_query.message.edit_text("❌ Ошибка авторизации в Remnawave.") return - devices = await api.get_user_hwid_devices(client_id) - if not devices: + total, deleted = reset_result + await invalidate_remnawave_profile( + session, + "", + str(client_id), + fallback_any=True, + ) + if total == 0: await callback_query.message.edit_text( "ℹ️ У пользователя нет привязанных устройств.", reply_markup=build_editor_kb(tg_id, True), ) return - deleted = 0 - for device in devices: - if await api.delete_user_hwid_device(client_id, device["hwid"]): - deleted += 1 - await callback_query.message.edit_text( - f"✅ Удалено HWID-устройств: {deleted} из {len(devices)}.", + f"✅ Удалено HWID-устройств: {deleted} из {total}.", reply_markup=build_editor_kb(tg_id, True), ) diff --git a/handlers/admin/users/users_keys.py b/handlers/admin/users/users_keys.py index a86ccfb2..07208b4a 100644 --- a/handlers/admin/users/users_keys.py +++ b/handlers/admin/users/users_keys.py @@ -815,6 +815,7 @@ async def handle_delete_key_confirm( if client_id: clusters = await get_servers(session=session) + await session.release_early() async def delete_key_from_servers(): tasks = [] @@ -862,6 +863,7 @@ async def handle_delete_user_confirm( result = await session.execute(select(Key.email, Key.client_id).where(Key.tg_id == tg_id)) key_records = result.all() + await session.release_early() async def delete_keys_from_servers(): try: @@ -1283,6 +1285,7 @@ async def handle_admin_unfreeze_subscription( await mark_key_as_unfrozen(session, record["tg_id"], client_id, new_expiry_time) await session.commit() + await session.release_early() await renew_key_in_cluster( cluster_id=cluster_id, @@ -1361,6 +1364,9 @@ async def change_expiry_time(expiry_time: int, email: str, session: AsyncSession if not target_cluster: return ValueError(f"No suitable cluster found for server {server_id}") + from middlewares.session import release_session_early + await release_session_early(session) + await renew_key_in_cluster( cluster_id=target_cluster, email=email, @@ -1747,6 +1753,7 @@ async def handle_cfg_save(callback_query: CallbackQuery, state: FSMContext, sess return try: + await session.release_early() await renew_key_in_cluster( cluster_id=key_obj.server_id, email=email, diff --git a/handlers/admin/users/users_tariffs.py b/handlers/admin/users/users_tariffs.py index 3dc24f13..a2be7ace 100644 --- a/handlers/admin/users/users_tariffs.py +++ b/handlers/admin/users/users_tariffs.py @@ -333,6 +333,7 @@ async def handle_user_renew_confirm( ) ) await session.commit() + await session.release_early() try: ok = await renew_key_in_cluster( @@ -664,6 +665,7 @@ async def handle_cfg_renew_apply(callback_query: CallbackQuery, session: AsyncSe ) ) await session.commit() + await session.release_early() try: ok = await renew_key_in_cluster( diff --git a/handlers/coupons.py b/handlers/coupons.py index dee47811..53a1787b 100644 --- a/handlers/coupons.py +++ b/handlers/coupons.py @@ -249,6 +249,7 @@ async def handle_key_extension( if tariff: key_subgroup = tariff.get("subgroup_title") + await session.release_early() await renew_key_in_cluster( cluster_id=key.server_id, email=key.email, diff --git a/handlers/keys/key_freeze.py b/handlers/keys/key_freeze.py index 0beeb097..a73a4acf 100644 --- a/handlers/keys/key_freeze.py +++ b/handlers/keys/key_freeze.py @@ -102,6 +102,7 @@ async def process_callback_unfreeze_subscription_confirm(callback_query: Callbac await mark_key_as_unfrozen(session, record["tg_id"], client_id, new_expiry_time) await session.commit() + await session.release_early() max(leftover / (1000 * 86400), 0.01) logger.info( diff --git a/handlers/keys/key_renew.py b/handlers/keys/key_renew.py index f0c3bf31..d9db615c 100644 --- a/handlers/keys/key_renew.py +++ b/handlers/keys/key_renew.py @@ -825,6 +825,7 @@ async def complete_key_renewal( logger.error(f"[Error] Кластер для {server_or_cluster} не найден.") return + await session.release_early() await renew_key_in_cluster( cluster_id=cluster_id, email=email, diff --git a/handlers/keys/key_view.py b/handlers/keys/key_view.py index 85462c5e..3e0a1985 100644 --- a/handlers/keys/key_view.py +++ b/handlers/keys/key_view.py @@ -20,15 +20,19 @@ from config import ( HAPP_CRYPTOLINK, HWID_RESET_BUTTON, QRCODE, - REMNAWAVE_LOGIN, - REMNAWAVE_PASSWORD, REMNAWAVE_WEBAPP, REMNAWAVE_WEBAPP_OPEN_IN_BROWSER, TOGGLE_CLIENT, USE_COUNTRY_SELECTION, ) from core.bootstrap import BUTTONS_CONFIG, MODES_CONFIG -from database import get_key_details, get_keys, get_servers +from panels.remnawave_runtime import ( + get_remnawave_profile, + invalidate_remnawave_profile, + resolve_remnawave_api_url, + with_remnawave_api, +) +from database import get_key_details, get_keys from database.models import Key from handlers.buttons import ( ADDONS_BUTTON_DEVICES, @@ -73,9 +77,6 @@ from hooks.processors import ( process_view_key_menu, ) from logger import logger -from panels.remnawave import RemnawaveAPI - - router = Router() moscow_tz = pytz.timezone("Europe/Moscow") @@ -360,37 +361,17 @@ async def build_key_view_payload(session: AsyncSession, key_name: str): hwid_count = 0 remna_used_gb = None if is_full_remnawave and client_id: - try: - servers = await get_servers(session) - remna_server = None - for cluster_name, cluster_servers in servers.items(): - for srv in cluster_servers: - if (srv.get("server_name") == server_name or cluster_name == server_name) and srv.get( - "panel_type" - ) == "remnawave": - remna_server = srv - break - if remna_server: - break - - if remna_server: - api = RemnawaveAPI(remna_server["api_url"]) - if await api.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD): - devices = await api.get_user_hwid_devices(client_id) - hwid_count = len(devices or []) - user_data = await api.get_user_by_uuid(client_id) - if user_data: - user_traffic = user_data.get("userTraffic", {}) - used_bytes = user_traffic.get("usedTrafficBytes", 0) - remna_used_gb = round(used_bytes / GB, 1) - traffic_limit_bytes_actual = user_data.get("trafficLimitBytes") - if traffic_limit_bytes_actual is not None: - if traffic_limit_bytes_actual > 0: - traffic_limit_gb = int(traffic_limit_bytes_actual / GB) - else: - traffic_limit_gb = 0 - except Exception as error: - logger.error(f"Ошибка при получении данных Remnawave для {client_id}: {error}") + profile = await get_remnawave_profile(session, str(server_name), client_id) + if profile: + hwid_count = int(profile.get("hwid_count") or 0) + remna_used_gb = profile.get("used_gb") + traffic_limit_bytes_actual = profile.get("traffic_limit_bytes") + if traffic_limit_bytes_actual is not None: + try: + traffic_limit_bytes_actual = int(traffic_limit_bytes_actual) + traffic_limit_gb = int(traffic_limit_bytes_actual / GB) if traffic_limit_bytes_actual > 0 else 0 + except (TypeError, ValueError): + pass country_selection_enabled = bool(MODES_CONFIG.get("COUNTRY_SELECTION_ENABLED", USE_COUNTRY_SELECTION)) remnawave_webapp_enabled = bool(MODES_CONFIG.get("REMNAWAVE_WEBAPP_ENABLED", REMNAWAVE_WEBAPP)) @@ -507,25 +488,42 @@ async def handle_reset_hwid(callback_query: CallbackQuery, session: AsyncSession await callback_query.answer("❌ У ключа отсутствует client_id.", show_alert=True) return - servers = await get_servers(session=session) - remna_server = next((srv for cl in servers.values() for srv in cl if srv.get("panel_type") == "remnawave"), None) - if not remna_server: + remna_api_url = await resolve_remnawave_api_url(session, str(record.get("server_id") or ""), fallback_any=True) + if not remna_api_url: await callback_query.answer("❌ Remnawave-сервер не найден.", show_alert=True) return - api = RemnawaveAPI(remna_server["api_url"]) - if not await api.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD): + async def _reset_devices(api): + devices = await api.get_user_hwid_devices(client_id) + if not devices: + return 0, 0 + deleted_local = 0 + for device in devices: + if await api.delete_user_hwid_device(client_id, device["hwid"]): + deleted_local += 1 + return len(devices), deleted_local + + reset_result = await with_remnawave_api( + session, + str(record.get("server_id") or ""), + _reset_devices, + fallback_any=True, + timeout_sec=12.0, + ) + if reset_result is None: await callback_query.answer("❌ Авторизация в Remnawave не удалась.", show_alert=True) return - devices = await api.get_user_hwid_devices(client_id) - if not devices: + total, deleted = reset_result + await invalidate_remnawave_profile( + session, + str(record.get("server_id") or ""), + str(client_id), + fallback_any=True, + ) + if total == 0: await callback_query.answer("✅ Устройства не были привязаны.", show_alert=True) else: - deleted = 0 - for device in devices: - if await api.delete_user_hwid_device(client_id, device["hwid"]): - deleted += 1 await callback_query.answer(f"✅ Устройства сброшены ({deleted})", show_alert=True) if await process_after_hwid_reset( diff --git a/handlers/keys/keys.py b/handlers/keys/keys.py index 6e771690..224517c5 100644 --- a/handlers/keys/keys.py +++ b/handlers/keys/keys.py @@ -69,6 +69,7 @@ async def process_callback_confirm_delete(callback_query: CallbackQuery, session keyboard = types.InlineKeyboardMarkup(inline_keyboard=[[back_button]]) await delete_key(session, client_id) + await session.release_early() await edit_or_send_message( target_message=callback_query.message, diff --git a/handlers/keys/operations/aggregated_links.py b/handlers/keys/operations/aggregated_links.py index 849a8331..9aea538e 100644 --- a/handlers/keys/operations/aggregated_links.py +++ b/handlers/keys/operations/aggregated_links.py @@ -2,15 +2,15 @@ import asyncio from sqlalchemy.ext.asyncio import AsyncSession -from config import HAPP_CRYPTOLINK, LEGACY_LINKS, PUBLIC_LINK, REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD, SUPERNODE +from config import HAPP_CRYPTOLINK, LEGACY_LINKS, PUBLIC_LINK, SUPERNODE from core.bootstrap import MODES_CONFIG +from panels.remnawave_runtime import with_remnawave_api from database import filter_cluster_by_subgroup, get_key_details, get_tariff_by_id from logger import logger from panels._3xui import get_vless_link_for_client, get_xui_instance -from panels.remnawave import RemnawaveAPI from servers import extract_host -from .utils import is_plan_vless, score_vless_url, split_by_panel +from .utils import is_plan_vless, split_by_panel async def _is_vless_tariff(session: AsyncSession, email: str) -> bool: @@ -23,40 +23,46 @@ async def _is_vless_tariff(session: AsyncSession, email: str) -> bool: return is_plan_vless(tariff) -async def _try_build_remna_vless(servers: list, email: str) -> tuple[str | None, str | None, str | None]: +async def _try_build_remna_vless( + session: AsyncSession, + servers: list, + email: str, +) -> tuple[str | None, str | None, str | None]: happ_cryptolink_enabled = bool(MODES_CONFIG.get("HAPP_CRYPTOLINK_ENABLED", HAPP_CRYPTOLINK)) si = servers[0] - remna = RemnawaveAPI(si["api_url"]) - ok = await remna.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD) - if not ok: + server_ref = si.get("server_name") or si.get("cluster_name") or si.get("api_url") or "" + + async def _build(api): + data = await api.get_subscription_by_username(email) + if not data: + return None + + sub_url = data.get("subscriptionUrl") or None + links = data.get("links") or [] + + best_vless = None + for link in links: + if isinstance(link, str) and link.lower().startswith("vless://"): + best_vless = link + logger.debug(f"[Remnawave] Found VLESS in links: {link[:60]}...") + break + + happ_link = None + if happ_cryptolink_enabled and sub_url: + try: + happ_link = await api.encrypt_happ_crypto_link(sub_url) + except Exception as e: + logger.warning(f"[Remnawave] happ encrypt failed: {e}") + happ_link = None + + return best_vless, sub_url, happ_link + + result = await with_remnawave_api(session, str(server_ref), _build, fallback_any=True, timeout_sec=8.0) + if result is None: logger.warning("[Remnawave] login failed") return None, None, None - - data = await remna.get_subscription_by_username(email) - if not data: - logger.warning("[Remnawave] by-username empty") - return None, None, None - - sub_url = data.get("subscriptionUrl") or None - links = data.get("links") or [] - - best_vless = None - for link in links: - if isinstance(link, str) and link.lower().startswith("vless://"): - best_vless = link - logger.debug(f"[Remnawave] Found VLESS in links: {link[:60]}...") - break - - happ_link = None - if happ_cryptolink_enabled and sub_url: - try: - happ_link = await remna.encrypt_happ_crypto_link(sub_url) - except Exception as e: - logger.warning(f"[Remnawave] happ encrypt failed: {e}") - happ_link = None - - return best_vless, sub_url, happ_link + return result async def _try_build_3xui_vless(servers: list, email: str) -> str | None: @@ -143,7 +149,7 @@ async def make_aggregated_link( logger.info("[agg_link] choose 3x-ui VLESS") return xui_link if remna: - best_vless, sub_url, happ_link = await _try_build_remna_vless(remna, email) + best_vless, sub_url, happ_link = await _try_build_remna_vless(session, remna, email) if best_vless: logger.info("[agg_link] choose Remnawave VLESS") return best_vless @@ -168,7 +174,7 @@ async def make_aggregated_link( if legacy_links_enabled: logger.info("[agg_link] LEGACY non-vless -> base link") return f"{base}/{email}/{tg_id}" - best_vless, sub_url, happ_link = await _try_build_remna_vless(remna, email) + best_vless, sub_url, happ_link = await _try_build_remna_vless(session, remna, email) if remna_link_override and ( remna_link_override.lower().startswith("vless://") or remna_link_override.startswith(("http", "happ://")) ): diff --git a/handlers/keys/operations/renewal.py b/handlers/keys/operations/renewal.py index 4aabb84b..27d74a89 100644 --- a/handlers/keys/operations/renewal.py +++ b/handlers/keys/operations/renewal.py @@ -4,7 +4,8 @@ from datetime import datetime from sqlalchemy.ext.asyncio import AsyncSession -from config import REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD, SUPERNODE +from config import SUPERNODE +from panels.remnawave_runtime import invalidate_remnawave_profile, with_remnawave_api from database import ( delete_notification, filter_cluster_by_subgroup, @@ -24,7 +25,6 @@ from logger import ( PANEL_XUI, ) from panels._3xui import extend_client_key, get_xui_instance -from panels.remnawave import RemnawaveAPI from .aggregated_links import make_aggregated_link from ...tariffs.subgroup_migration import migrate_between_subgroups @@ -70,21 +70,9 @@ async def renew_on_remnawave( :1 ] - remna = RemnawaveAPI(remnawave_nodes[0]["api_url"]) - if not await remna.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD): - logger.error(f"{PANEL_REMNA} Не удалось войти в Remnawave API") - return False + server_ref = remnawave_nodes[0].get("server_name") or remnawave_nodes[0].get("api_url") or "" hwid_device_limit = int(hwid_device_limit or 0) - if old_device_limit is not None and hwid_device_limit < old_device_limit: - try: - await remna.clear_all_hwid_devices(client_id) - logger.info( - f"{PANEL_REMNA} HWID устройства сброшены для {client_id} (лимит {old_device_limit} → {hwid_device_limit})" - ) - except Exception as e: - logger.warning(f"{PANEL_REMNA} Ошибка сброса HWID: {e}") - expire_iso = datetime.utcfromtimestamp(new_expiry_time // 1000).isoformat() + "Z" traffic_limit_bytes = total_gb * 1024 * 1024 * 1024 if total_gb else 0 active_inbounds = [s["inbound_id"] for s in remnawave_nodes] @@ -98,13 +86,39 @@ async def renew_on_remnawave( "external_squad_uuid": external_squad_uuid, } - updated = await remna.update_user(**update_kwargs) - if updated: - if reset_traffic: + async def _renew(api): + if old_device_limit is not None and hwid_device_limit < old_device_limit: try: - await remna.reset_user_traffic(client_id) + await api.clear_all_hwid_devices(client_id) + logger.info( + f"{PANEL_REMNA} HWID устройства сброшены для {client_id} (лимит {old_device_limit} → {hwid_device_limit})" + ) + except Exception as e: + logger.warning(f"{PANEL_REMNA} Ошибка сброса HWID: {e}") + + updated_local = await api.update_user(**update_kwargs) + if updated_local and reset_traffic: + try: + await api.reset_user_traffic(client_id) except Exception as e: logger.warning(f"{PANEL_REMNA} reset_user_traffic: {e}") + if updated_local: + await invalidate_remnawave_profile( + session, + str(server_ref), + str(client_id), + fallback_any=True, + ) + return bool(updated_local) + + updated = await with_remnawave_api( + session, + str(server_ref), + _renew, + fallback_any=True, + timeout_sec=12.0, + ) + if updated: logger.info(f"{PANEL_REMNA} Подписка {client_id} успешно продлена") return True logger.debug(f"{PANEL_REMNA} Не удалось продлить {client_id}. Автосоздание отключено.") diff --git a/handlers/keys/operations/traffic.py b/handlers/keys/operations/traffic.py index cbfc1e66..cd7c5f47 100644 --- a/handlers/keys/operations/traffic.py +++ b/handlers/keys/operations/traffic.py @@ -5,12 +5,16 @@ from typing import Any from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from config import REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD, SUPERNODE +from config import SUPERNODE +from panels.remnawave_runtime import ( + get_remnawave_profile, + invalidate_remnawave_profile, + with_remnawave_api, +) from database import get_servers from database.models import Key, Server from logger import logger from panels._3xui import get_client_traffic, get_xui_instance -from panels.remnawave import RemnawaveAPI async def get_user_traffic(session: AsyncSession, tg_id: int, email: str) -> dict[str, Any]: @@ -54,7 +58,7 @@ async def get_user_traffic(session: AsyncSession, tg_id: int, email: str) -> dic remnawave_client_id = None remnawave_checked = False - remnawave_api_url = None + remnawave_server_ref = None async def fetch_traffic(server_info: dict, client_id: str) -> tuple[str, Any]: server_name = server_info["server_name"] @@ -88,7 +92,7 @@ async def get_user_traffic(session: AsyncSession, tg_id: int, email: str) -> dic if panel_type == "remnawave" and not remnawave_checked: remnawave_client_id = client_id - remnawave_api_url = server_info["api_url"] + remnawave_server_ref = server_info.get("server_name") or server_info.get("cluster_name") remnawave_checked = True elif panel_type == "3x-ui": tasks.append(fetch_traffic(server_info, client_id)) @@ -97,22 +101,13 @@ async def get_user_traffic(session: AsyncSession, tg_id: int, email: str) -> dic for server, result in results: user_traffic_data[server] = result - if remnawave_client_id and remnawave_api_url: - try: - remna = RemnawaveAPI(remnawave_api_url) - if not await remna.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD): - user_traffic_data["Remnawave (общий)"] = "Не удалось авторизоваться" - else: - user_data = await remna.get_user_by_uuid(remnawave_client_id) - if not user_data: - user_traffic_data["Remnawave (общий)"] = "Клиент не найден" - else: - user_traffic = user_data.get("userTraffic", {}) - used_bytes = user_traffic.get("usedTrafficBytes", 0) - used_gb = round(used_bytes / 1073741824, 2) - user_traffic_data["Remnawave (общий)"] = used_gb - except Exception as e: - user_traffic_data["Remnawave (общий)"] = f"Ошибка: {e}" + if remnawave_client_id and remnawave_server_ref: + profile = await get_remnawave_profile(session, str(remnawave_server_ref), remnawave_client_id, fallback_any=True) + if not profile: + user_traffic_data["Remnawave (общий)"] = "Данные недоступны" + else: + used_gb = profile.get("used_gb") + user_traffic_data["Remnawave (общий)"] = round(float(used_gb), 2) if used_gb is not None else 0 return {"status": "success", "traffic": user_traffic_data} @@ -154,12 +149,18 @@ async def reset_traffic_in_cluster(cluster_id: str, email: str, session: AsyncSe client_id = row[0] - remna = RemnawaveAPI(api_url) - if not await remna.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD): - logger.warning(f"[Reset Traffic] Не удалось авторизоваться в Remnawave ({server_name})") - continue + async def _reset(api): + done = await api.reset_user_traffic(client_id) + if done: + await invalidate_remnawave_profile( + session, + str(server_name or cluster_id), + str(client_id), + fallback_any=True, + ) + return done - tasks.append(remna.reset_user_traffic(client_id)) + tasks.append(with_remnawave_api(session, server_name or cluster_id, _reset, fallback_any=True)) remnawave_done = True continue diff --git a/handlers/keys/operations/update.py b/handlers/keys/operations/update.py index 432985f4..4f6a3d44 100644 --- a/handlers/keys/operations/update.py +++ b/handlers/keys/operations/update.py @@ -5,7 +5,8 @@ from datetime import datetime, timezone from sqlalchemy import delete, select from sqlalchemy.ext.asyncio import AsyncSession -from config import PUBLIC_LINK, REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD, SUPERNODE +from config import PUBLIC_LINK, SUPERNODE +from panels.remnawave_runtime import invalidate_remnawave_profile, with_remnawave_api from database import filter_cluster_by_subgroup, filter_cluster_by_tariff, get_servers, get_tariff_by_id, store_key from handlers.utils import ALLOWED_GROUP_CODES from database.models import Key, Tariff @@ -17,7 +18,6 @@ from logger import ( PANEL_XUI, ) from panels._3xui import ClientConfig, add_client, get_xui_instance -from panels.remnawave import RemnawaveAPI from .aggregated_links import make_aggregated_link from .deletion import delete_key_from_cluster @@ -92,58 +92,67 @@ async def update_key_on_cluster( if remnawave_servers: inbound_ids = [s["inbound_id"] for s in remnawave_servers if s.get("inbound_id")] - remna = RemnawaveAPI(remnawave_servers[0]["api_url"]) - if await remna.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD): - await remna.delete_user(client_id) + group_code = remnawave_servers[0].get("tariff_group") + if not group_code: + raise ValueError("У Remnawave-сервера отсутствует tariff_group") - group_code = remnawave_servers[0].get("tariff_group") - if not group_code: - raise ValueError("У Remnawave-сервера отсутствует tariff_group") + _ = await session.execute( + select(Tariff) + .where(Tariff.group_code == group_code, Tariff.is_active.is_(True)) + .order_by(Tariff.duration_days.desc()) + .limit(1) + ) - _ = await session.execute( - select(Tariff) - .where(Tariff.group_code == group_code, Tariff.is_active.is_(True)) - .order_by(Tariff.duration_days.desc()) - .limit(1) + short_uuid = None + if remnawave_link and "/" in remnawave_link: + short_uuid = remnawave_link.rstrip("/").split("/")[-1] + logger.debug(f"{PANEL_REMNA} Извлечен short_uuid: {short_uuid}") + + user_data = { + "username": email, + "trafficLimitStrategy": "NO_RESET", + "expireAt": expire_iso, + "telegramId": tg_id, + "activeInternalSquads": inbound_ids, + "uuid": client_id, + } + + if external_squad_uuid: + user_data["activeExternalSquads"] = [external_squad_uuid] + user_data["activeExternalSquadUuids"] = [external_squad_uuid] + user_data["externalSquadUuid"] = external_squad_uuid + + if traffic_limit is not None: + user_data["trafficLimitBytes"] = traffic_limit * 1024**3 + if device_limit is not None: + user_data["hwidDeviceLimit"] = device_limit + if short_uuid: + user_data["shortUuid"] = short_uuid + logger.debug(f"{PANEL_REMNA} Добавлен short_uuid: {short_uuid}") + + async def _recreate(api): + await api.delete_user(client_id) + return await api.create_user(user_data) + + remna_result = await with_remnawave_api( + session, + str(remnawave_servers[0].get("server_name") or cluster_id), + _recreate, + fallback_any=True, + timeout_sec=12.0, + ) + if remna_result: + remnawave_client_id = remna_result.get("uuid") + remnawave_link_value = remna_result.get("subscriptionUrl") + await invalidate_remnawave_profile( + session, + str(remnawave_servers[0].get("server_name") or cluster_id), + str(remnawave_client_id or client_id), + fallback_any=True, ) - - short_uuid = None - if remnawave_link and "/" in remnawave_link: - short_uuid = remnawave_link.rstrip("/").split("/")[-1] - logger.debug(f"{PANEL_REMNA} Извлечен short_uuid: {short_uuid}") - - user_data = { - "username": email, - "trafficLimitStrategy": "NO_RESET", - "expireAt": expire_iso, - "telegramId": tg_id, - "activeInternalSquads": inbound_ids, - "uuid": client_id, - } - - if external_squad_uuid: - user_data["activeExternalSquads"] = [external_squad_uuid] - user_data["activeExternalSquadUuids"] = [external_squad_uuid] - user_data["externalSquadUuid"] = external_squad_uuid - - if traffic_limit is not None: - user_data["trafficLimitBytes"] = traffic_limit * 1024**3 - if device_limit is not None: - user_data["hwidDeviceLimit"] = device_limit - if short_uuid: - user_data["shortUuid"] = short_uuid - logger.debug(f"{PANEL_REMNA} Добавлен short_uuid: {short_uuid}") - - result = await remna.create_user(user_data) - if result: - remnawave_client_id = result.get("uuid") - remnawave_link_value = result.get("subscriptionUrl") - - logger.info(f"{PANEL_REMNA} Клиент заново создан, uuid={remnawave_client_id}") - else: - logger.error(f"{PANEL_REMNA} Ошибка создания клиента") + logger.info(f"{PANEL_REMNA} Клиент заново создан, uuid={remnawave_client_id}") else: - logger.error(f"{PANEL_REMNA} Не удалось авторизоваться") + logger.error(f"{PANEL_REMNA} Не удалось авторизоваться/создать клиента") if not remnawave_client_id: logger.warning(f"{PANEL_REMNA} client_id не получен, используем исходный {client_id}") @@ -244,6 +253,8 @@ async def update_subscription( else: logger.warning("[LOG] update_subscription: tariff_id отсутствует!") + from middlewares.session import release_session_early + await release_session_early(session) await delete_key_from_cluster(old_cluster_id, email, client_id, session=session) await session.execute(delete(Key).where(Key.tg_id == tg_id, Key.email == email)) await session.commit() diff --git a/handlers/keys/subscriptions.py b/handlers/keys/subscriptions.py index da86be53..73174e92 100644 --- a/handlers/keys/subscriptions.py +++ b/handlers/keys/subscriptions.py @@ -20,12 +20,19 @@ from config import ( USE_COUNTRY_SELECTION, ) from core.bootstrap import MODES_CONFIG +from core.cache_config import ( + SUBSCRIPTION_HANDLER_CONCURRENCY, + SUBSCRIPTION_RESPONSE_CACHE_TTL_SEC, +) +from core.redis_cache import cache_get, cache_key, cache_set from database import get_key_details, get_servers from database.models import Server from handlers.texts import HAPP_ANNOUNCE, HIDDIFY_PROFILE_TITLE, SUBSCRIPTION_INFO_TEXT, V2RAYTUN_ANNOUNCE from handlers.utils import convert_to_bytes from logger import logger +_subscription_semaphore = asyncio.Semaphore(SUBSCRIPTION_HANDLER_CONCURRENCY) + async def fetch_url_content(url: str, identifier: str) -> tuple[list[str], dict[str, str]]: try: @@ -246,41 +253,55 @@ async def handle_subscription(request: web.Request) -> web.Response: if not email or not tg_id: return web.Response(text="❌ Неверные параметры запроса.", status=400) + cache_key_sub = cache_key("sub_response", email, tg_id) + cached = await cache_get(cache_key_sub) + if isinstance(cached, dict) and "b" in cached and "h" in cached: + return web.Response(text=cached["b"], headers=cached["h"]) + sessionmaker = request.app["sessionmaker"] - async with sessionmaker() as session: - try: - key = await get_key_details(session, email) - if not key: - return web.Response(text="❌ Клиент с таким email не найден.", status=404) + async with _subscription_semaphore: + async with sessionmaker() as session: + try: + key = await get_key_details(session, email) + if not key: + return web.Response(text="❌ Клиент с таким email не найден.", status=404) - if int(tg_id) != int(key["tg_id"]): - return web.Response(text="❌ Неверные данные. Получите свой ключ в боте.", status=403) + if int(tg_id) != int(key["tg_id"]): + return web.Response(text="❌ Неверные данные. Получите свой ключ в боте.", status=403) - expiry_time_ms = key["expiry_time"] - server_id = key["server_id"] - remnawave_link = key["remnawave_link"] + expiry_time_ms = key["expiry_time"] + server_id = key["server_id"] + remnawave_link = key["remnawave_link"] - time_left = format_time_left(expiry_time_ms) + time_left = format_time_left(expiry_time_ms) - urls = await get_subscription_urls(server_id, email, session, include_remnawave_key=remnawave_link) - if not urls: - return web.Response(text="❌ Сервер не найден.", status=404) + urls = await get_subscription_urls(server_id, email, session, include_remnawave_key=remnawave_link) + if not urls: + return web.Response(text="❌ Сервер не найден.", status=404) - query_string = request.query_string - combined_subscriptions, headers_list = await combine_unique_lines(urls, tg_id or email, query_string) + query_string = request.query_string + combined_subscriptions, headers_list = await combine_unique_lines(urls, tg_id or email, query_string) - cleaned_subscriptions = [clean_subscription_line(line) for line in combined_subscriptions] + cleaned_subscriptions = [clean_subscription_line(line) for line in combined_subscriptions] - base64_encoded = base64.b64encode("\n".join(cleaned_subscriptions).encode("utf-8")).decode("utf-8") - subscription_info = SUBSCRIPTION_INFO_TEXT.format(email=email, time_left=time_left) + base64_encoded = base64.b64encode("\n".join(cleaned_subscriptions).encode("utf-8")).decode("utf-8") + subscription_info = SUBSCRIPTION_INFO_TEXT.format(email=email, time_left=time_left) - user_agent = request.headers.get("User-Agent", "") - subscription_userinfo = calculate_traffic(cleaned_subscriptions, expiry_time_ms, headers_list) - headers = prepare_headers(user_agent, PROJECT_NAME, subscription_info, subscription_userinfo) + user_agent = request.headers.get("User-Agent", "") + subscription_userinfo = calculate_traffic(cleaned_subscriptions, expiry_time_ms, headers_list) + headers = prepare_headers(user_agent, PROJECT_NAME, subscription_info, subscription_userinfo) - return web.Response(text=base64_encoded, headers=headers) + await session.commit() - except Exception as e: - logger.error(f"Ошибка в handle_subscription: {e}", exc_info=True) - return web.Response(text=f"❌ Ошибка сервера: {e}", status=500) + await cache_set( + cache_key_sub, + {"b": base64_encoded, "h": dict(headers)}, + SUBSCRIPTION_RESPONSE_CACHE_TTL_SEC, + ) + return web.Response(text=base64_encoded, headers=headers) + + except Exception as e: + await session.rollback() + logger.error(f"Ошибка в handle_subscription: {e}", exc_info=True) + return web.Response(text=f"❌ Ошибка сервера: {e}", status=500) diff --git a/handlers/notifications/general_notifications.py b/handlers/notifications/general_notifications.py index 9fe2e46f..8f2aafba 100644 --- a/handlers/notifications/general_notifications.py +++ b/handlers/notifications/general_notifications.py @@ -9,6 +9,7 @@ from sqlalchemy import select, text, update from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker from config import ( + EXECUTOR_POOL_SIZE, NOTIFICATION_TIME, NOTIFY_10H_ENABLED, NOTIFY_10H_HOURS, @@ -26,6 +27,7 @@ from core.bootstrap import MODES_CONFIG, NOTIFICATIONS_CONFIG from database import ( add_notification, check_notification_time, + check_notification_time_bulk, check_notifications_bulk, delete_key, delete_notification, @@ -60,9 +62,15 @@ from handlers.texts import ( from handlers.utils import format_hours, format_minutes, get_russian_month from hooks.hooks import run_hooks from logger import logger +from middlewares.session import release_session_early, wrap_session from .hot_leads_notifications import notify_hot_leads -from .notify_utils import prepare_key_expiry_data, send_messages_with_limit, send_notification +from .notify_utils import ( + NotificationRateLimiter, + prepare_key_expiry_data, + send_messages_with_limit, + send_notification, +) from .special_notifications import notify_inactive_trial_users, notify_users_no_traffic @@ -366,6 +374,7 @@ async def try_auto_renew(ctx: NotificationContext, key) -> tuple[bool, Optional[ key_subgroup = current_tariff.get("subgroup_title") + await release_session_early(ctx.session) await renew_key_in_cluster( cluster_id=server_id, email=email, @@ -416,6 +425,7 @@ async def notify_expiring_keys( notify_type: str, photo: str, notify_renew_enabled: bool, + sessionmaker: Optional[async_sessionmaker] = None, ): if min_hours > 0: logger.info(f"Начало проверки подписок, истекающих через {min_hours}-{max_hours} часов.") @@ -436,7 +446,15 @@ async def notify_expiring_keys( allowed = await check_notifications_bulk(ctx.session, notify_type, max_hours, tg_ids=tg_ids, emails=emails) allowed_set = {(user["tg_id"], user["email"]) for user in allowed} + notify_pairs = [ + (key.tg_id, f"{(key.email or '')}_{notify_type}") + for key in expiring_keys + if (key.tg_id, key.email or "") in allowed_set + ] + can_notify_set = await check_notification_time_bulk(ctx.session, notify_pairs, max_hours) + messages = [] + renew_candidates: list[tuple[Any, str]] = [] for key in expiring_keys: tg_id = key.tg_id @@ -446,24 +464,11 @@ async def notify_expiring_keys( continue notification_id = f"{email}_{notify_type}" - - can_notify = await check_notification_time(ctx.session, tg_id, notification_id, hours=max_hours) - if not can_notify: + if (tg_id, notification_id) not in can_notify_set: continue if notify_renew_enabled: - try: - renewed, tariff, new_expiry = await try_auto_renew(ctx, key) - - if renewed and tariff and new_expiry: - await send_renewed_notification(ctx, key, tariff, new_expiry) - await add_notification(ctx.session, tg_id, notification_id) - else: - await send_cannot_renew(ctx, key, photo) - await add_notification(ctx.session, tg_id, notification_id) - - except Exception as error: - logger.error(f"Ошибка авто-продления/уведомления для пользователя {tg_id}: {error}") + renew_candidates.append((key, notification_id)) else: expiry_data = await prepare_key_expiry_data(key, ctx.session, ctx.current_time) notification_text = KEY_EXPIRY.format( @@ -483,6 +488,70 @@ async def notify_expiring_keys( "email": email, }) + + renew_results: list[tuple[Any, str, bool, Optional[dict], Optional[int]]] = [] + use_parallel = ( + notify_renew_enabled + and renew_candidates + and sessionmaker is not None + and EXECUTOR_POOL_SIZE > 1 + ) + if use_parallel: + semaphore = asyncio.Semaphore(EXECUTOR_POOL_SIZE) + + async def do_one_renew(key: Any, notification_id: str) -> tuple[Any, str, bool, Optional[dict], Optional[int]]: + async with semaphore: + async with sessionmaker() as session: + session = wrap_session(session, sessionmaker) + ctx_key = NotificationContext( + bot=ctx.bot, + session=session, + current_time=ctx.current_time, + preload_data=ctx.preload_data, + bulk_updates=None, + ) + try: + renewed, tariff, new_expiry = await try_auto_renew(ctx_key, key) + await session.commit() + return (key, notification_id, bool(renewed), tariff, new_expiry) + except Exception as error: + logger.error( + "Ошибка авто-продления для пользователя %s (%s): %s", + key.tg_id, + getattr(key, "email", ""), + error, + ) + return (key, notification_id, False, None, None) + + tasks = [do_one_renew(key, nid) for key, nid in renew_candidates] + results = await asyncio.gather(*tasks, return_exceptions=True) + for r in results: + if isinstance(r, Exception): + logger.error("Ошибка в задаче продления: %s", r) + continue + renew_results.append(r) + else: + + for key, notification_id in renew_candidates: + tg_id = key.tg_id + try: + renewed, tariff, new_expiry = await try_auto_renew(ctx, key) + renew_results.append((key, notification_id, bool(renewed), tariff, new_expiry)) + except Exception as error: + logger.error(f"Ошибка авто-продления/уведомления для пользователя {tg_id}: {error}") + renew_results.append((key, notification_id, False, None, None)) + + renew_rate_limiter = NotificationRateLimiter(max_rate=30, window=1.0) + for key, notification_id, renewed, tariff, new_expiry in renew_results: + tg_id = key.tg_id + await renew_rate_limiter.acquire() + if renewed and tariff and new_expiry: + await send_renewed_notification(ctx, key, tariff, new_expiry) + await add_notification(ctx.session, tg_id, notification_id) + else: + await send_cannot_renew(ctx, key, photo) + await add_notification(ctx.session, tg_id, notification_id) + if messages: results = await send_messages_with_limit(ctx.bot, messages, session=ctx.session) sent_count = 0 @@ -569,6 +638,8 @@ async def handle_expired_keys(ctx: NotificationContext, keys: list): async def periodic_notifications(bot: Bot, *, sessionmaker: async_sessionmaker): + from middlewares.session import wrap_session + while True: notification_interval = int(NOTIFICATIONS_CONFIG.get("BASE_NOTIFICATION_MINUTE", NOTIFICATION_TIME)) @@ -579,14 +650,23 @@ async def periodic_notifications(bot: Bot, *, sessionmaker: async_sessionmaker): async with notification_lock: try: - async with sessionmaker() as session: + + current_time = int(datetime.now(moscow_tz).timestamp() * 1000) + start_time = datetime.now() + preload_data = None + keys = [] + bulk_updates = { + "balance_changes": {}, + "key_expiry_updates": [], + "key_tariff_updates": [], + "notifications_to_add": [], + "notifications_to_delete": [], + } + + async with sessionmaker() as preload_session: logger.info("Запуск обработки уведомлений") - - current_time = int(datetime.now(moscow_tz).timestamp() * 1000) - start_time = datetime.now() - try: - preload_data = await preload_notification_data(session) + preload_data = await preload_notification_data(preload_session) keys_data = preload_data["keys_data"] keys = [data["key"] for data in keys_data.values()] preload_time = (datetime.now() - start_time).total_seconds() @@ -594,30 +674,21 @@ async def periodic_notifications(bot: Bot, *, sessionmaker: async_sessionmaker): f"Предзагружено данных: {len(keys)} ключей, " f"{len(preload_data['tariffs_cache'])} тарифов за {preload_time:.2f}s" ) - - bulk_updates = { - "balance_changes": {}, - "key_expiry_updates": [], - "key_tariff_updates": [], - "notifications_to_add": [], - "notifications_to_delete": [], - } - except Exception as error: logger.error(f"Ошибка при предварительной загрузке данных: {error}") try: - keys = await get_all_keys(session=session) + keys = await get_all_keys(session=preload_session) keys = [k for k in keys if not k.is_frozen] preload_data = None - bulk_updates = None preload_time = (datetime.now() - start_time).total_seconds() logger.info(f"Fallback: получено {len(keys)} ключей за {preload_time:.2f}s") except Exception as fallback_error: logger.error(f"Ошибка fallback получения ключей: {fallback_error}") keys = [] preload_data = None - bulk_updates = None + async with sessionmaker() as session: + session = wrap_session(session, sessionmaker) ctx = NotificationContext( bot=bot, session=session, @@ -653,6 +724,7 @@ async def periodic_notifications(bot: Bot, *, sessionmaker: async_sessionmaker): notify_type="key_24h", photo="notify_24h.jpg", notify_renew_enabled=notify_renew_enabled, + sessionmaker=sessionmaker, ) except Exception as error: logger.error(f"Ошибка в notify_expiring_keys (24h): {error}") @@ -667,6 +739,7 @@ async def periodic_notifications(bot: Bot, *, sessionmaker: async_sessionmaker): notify_type="key_10h", photo="notify_10h.jpg", notify_renew_enabled=notify_renew_enabled, + sessionmaker=sessionmaker, ) except Exception as error: logger.error(f"Ошибка в notify_expiring_keys (10h): {error}") @@ -710,6 +783,7 @@ async def periodic_notifications(bot: Bot, *, sessionmaker: async_sessionmaker): total_time = (datetime.now() - start_time).total_seconds() logger.info(f"Уведомления завершены за {total_time:.2f}s") + await session.commit() except Exception as error: logger.error(f"Ошибка в periodic_notifications: {error}") diff --git a/handlers/start.py b/handlers/start.py index 1313e6d7..7cbc8afc 100644 --- a/handlers/start.py +++ b/handlers/start.py @@ -22,6 +22,8 @@ from config import ( TRIAL_TIME_DISABLE, ) from core.bootstrap import BUTTONS_CONFIG, MODES_CONFIG +from core.cache_config import START_UTM_EXISTS_TTL_SEC +from core.redis_cache import cache_get, cache_key, cache_set from database import ( add_user, get_coupon_by_code, @@ -261,8 +263,13 @@ async def prompt_subscription(callback: CallbackQuery): async def handle_utm_link(utm_code: str, message: Message, state: FSMContext, session: AsyncSession, user_data: dict): - res = await session.execute(select(TrackingSource).where(TrackingSource.code == utm_code)) - if not res.scalar_one_or_none(): + is_known = await cache_get(cache_key("utm_exists", utm_code)) + if is_known is None: + res = await session.execute(select(TrackingSource).where(TrackingSource.code == utm_code)) + is_known = res.scalar_one_or_none() is not None + await cache_set(cache_key("utm_exists", utm_code), bool(is_known), START_UTM_EXISTS_TTL_SEC) + + if not is_known: await message.answer("❌ UTM ссылка не найдена.") return await upsert_source_if_empty(session, user_data["tg_id"], utm_code) diff --git a/handlers/tariffs/addons/key_addons_main.py b/handlers/tariffs/addons/key_addons_main.py index c3b9a862..83e286ca 100644 --- a/handlers/tariffs/addons/key_addons_main.py +++ b/handlers/tariffs/addons/key_addons_main.py @@ -851,6 +851,7 @@ async def handle_addons_confirm(callback: CallbackQuery, state: FSMContext, sess f"old_subgroup={old_subgroup}" ) + await session.release_early() await renew_key_in_cluster( cluster_id=server_id, email=email, diff --git a/handlers/tariffs/addons/key_addons_pack.py b/handlers/tariffs/addons/key_addons_pack.py index 91cd5dd7..a96f3873 100644 --- a/handlers/tariffs/addons/key_addons_pack.py +++ b/handlers/tariffs/addons/key_addons_pack.py @@ -827,6 +827,7 @@ async def handle_addons_confirm(callback: CallbackQuery, state: FSMContext, sess f"old_subgroup={old_subgroup}" ) + await session.release_early() await renew_key_in_cluster( cluster_id=server_id, email=email, diff --git a/handlers/tariffs/tariff_display.py b/handlers/tariffs/tariff_display.py index c6335911..9a1239eb 100644 --- a/handlers/tariffs/tariff_display.py +++ b/handlers/tariffs/tariff_display.py @@ -2,9 +2,9 @@ from typing import Any from sqlalchemy.ext.asyncio import AsyncSession -from config import REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD +from panels.remnawave_runtime import get_remnawave_profile from core.settings.tariffs_config import TARIFFS_CONFIG, normalize_tariff_config -from database import get_servers, get_tariff_by_id +from database import get_tariff_by_id from database.models import Key from handlers.texts import key_message_success from logger import logger @@ -191,56 +191,26 @@ async def get_key_tariff_display( if server_cluster_id and client_id: try: - servers = await get_servers(session) - cluster_servers = servers.get(server_cluster_id) or servers.get(str(server_cluster_id)) or [] - remna_server = next((srv for srv in cluster_servers if srv.get("panel_type") == "remnawave"), None) - if not remna_server: - remna_server = next( - (srv for cl in servers.values() for srv in cl if srv.get("panel_type") == "remnawave"), - None, - ) + profile = await get_remnawave_profile(session, str(server_cluster_id), client_id, fallback_any=True) + if profile: + panel_traffic_limit_bytes = profile.get("traffic_limit_bytes") + panel_device_limit = profile.get("hwid_device_limit") - if remna_server: - from panels.remnawave import RemnawaveAPI - - api = RemnawaveAPI(remna_server["api_url"]) - try: - ok = await api.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD) - except Exception as e: - logger.warning(f"[KeyTariffDisplay] Remnawave login error for {client_id}: {e}") - ok = False - - if ok: + if panel_traffic_limit_bytes is not None: try: - user_data = await api.get_user_by_uuid(client_id) - except Exception as e: - logger.warning(f"[KeyTariffDisplay] Remnawave get_user_by_uuid error for {client_id}: {e}") - user_data = None + traffic_limit_bytes = int(panel_traffic_limit_bytes) + except (TypeError, ValueError): + logger.warning( + f"[KeyTariffDisplay] Invalid trafficLimitBytes from Remnawave for {client_id}: {panel_traffic_limit_bytes}" + ) - if user_data: - panel_traffic_limit_bytes = user_data.get("trafficLimitBytes") - panel_device_limit = user_data.get("hwidDeviceLimit") - - if panel_traffic_limit_bytes is not None: - try: - traffic_limit_bytes = int(panel_traffic_limit_bytes) - except (TypeError, ValueError): - logger.warning( - f"[KeyTariffDisplay] Invalid trafficLimitBytes from Remnawave for {client_id}: {panel_traffic_limit_bytes}" - ) - - if panel_device_limit is not None: - try: - device_limit = int(panel_device_limit) - except (TypeError, ValueError): - logger.warning( - f"[KeyTariffDisplay] Invalid hwidDeviceLimit from Remnawave for {client_id}: {panel_device_limit}" - ) - - try: - await api.aclose() - except Exception: - pass + if panel_device_limit is not None: + try: + device_limit = int(panel_device_limit) + except (TypeError, ValueError): + logger.warning( + f"[KeyTariffDisplay] Invalid hwidDeviceLimit from Remnawave for {client_id}: {panel_device_limit}" + ) except Exception as e: logger.warning(f"[KeyTariffDisplay] Error while overriding limits from panel: {e}") diff --git a/middlewares/__init__.py b/middlewares/__init__.py index b5a9271f..11154548 100644 --- a/middlewares/__init__.py +++ b/middlewares/__init__.py @@ -2,6 +2,7 @@ from collections.abc import Iterable from aiogram import BaseMiddleware, Dispatcher +from core.bootstrap import MODES_CONFIG from middlewares.ban_checker import BanCheckerMiddleware from middlewares.subscription import SubscriptionMiddleware @@ -12,6 +13,7 @@ from .direct_start_blocker import DirectStartBlockerMiddleware from .loggings import LoggingMiddleware from .maintenance import MaintenanceModeMiddleware from .probe import MiddlewareProbe, StreamProbeMiddleware, TailHandlerProbe +from .runtime_config_sync import RuntimeConfigSyncMiddleware from .session import SessionMiddleware from .throttling import ThrottlingMiddleware from .user import UserMiddleware @@ -30,18 +32,47 @@ def register_middleware( def wrap(mw, name: str): return MiddlewareProbe(mw, name) if PROBE_LOGGING else mw + exclude_set = set(exclude or []) + + flag_by_name = { + "runtime_config_sync": "RUNTIME_CONFIG_SYNC_MIDDLEWARE_ENABLED", + "concurrency": "CONCURRENCY_MIDDLEWARE_ENABLED", + "subscription": "SUBSCRIPTION_MIDDLEWARE_ENABLED", + "session": "SESSION_MIDDLEWARE_ENABLED", + "direct_start_blocker": "DIRECT_START_BLOCKER_MIDDLEWARE_ENABLED", + "ban_checker": "BAN_CHECKER_MIDDLEWARE_ENABLED", + "admin": "ADMIN_MIDDLEWARE_ENABLED", + "maintenance": "MAINTENANCE_MIDDLEWARE_ENABLED", + "logging": "LOGGING_MIDDLEWARE_ENABLED", + "throttling": "THROTTLING_MIDDLEWARE_ENABLED", + "user": "USER_MIDDLEWARE_ENABLED", + "answer": "ANSWER_MIDDLEWARE_ENABLED", + } + + def middleware_enabled(name: str) -> bool: + if name in exclude_set: + return False + flag_name = flag_by_name.get(name) + if not flag_name: + return True + return bool(MODES_CONFIG.get(flag_name, True)) + if PROBE_LOGGING: dispatcher.update.outer_middleware(StreamProbeMiddleware("global")) - if sessionmaker: + if middleware_enabled("runtime_config_sync"): + dispatcher.update.outer_middleware(wrap(RuntimeConfigSyncMiddleware(), "runtime_config_sync")) + if sessionmaker and middleware_enabled("concurrency"): dispatcher.update.outer_middleware(wrap(ConcurrencyLimiterMiddleware(), "concurrency")) + if middleware_enabled("subscription"): + dispatcher.update.outer_middleware(wrap(SubscriptionMiddleware(), "subscription")) + if sessionmaker and middleware_enabled("session"): dispatcher.update.outer_middleware(wrap(SessionMiddleware(sessionmaker), "session")) + if middleware_enabled("direct_start_blocker"): + dispatcher.update.outer_middleware(wrap(DirectStartBlockerMiddleware(), "direct_start_blocker")) - dispatcher.update.outer_middleware(wrap(DirectStartBlockerMiddleware(), "direct_start_blocker")) - - dispatcher.update.outer_middleware(wrap(SubscriptionMiddleware(), "subscription")) - - dispatcher.update.outer_middleware(wrap(BanCheckerMiddleware(), "ban_checker")) + if middleware_enabled("ban_checker"): + dispatcher.update.outer_middleware(wrap(BanCheckerMiddleware(), "ban_checker")) if middlewares is None: available_middlewares = { @@ -52,8 +83,9 @@ def register_middleware( "user": UserMiddleware(), "answer": CallbackAnswerMiddleware(), } - exclude_set = set(exclude or []) - middlewares = [wrap(mw, name) for name, mw in available_middlewares.items() if name not in exclude_set] + middlewares = [ + wrap(mw, name) for name, mw in available_middlewares.items() if middleware_enabled(name) + ] else: wrapped = [] for mw in middlewares: diff --git a/middlewares/admin.py b/middlewares/admin.py index bf34f896..f0f6c3d0 100644 --- a/middlewares/admin.py +++ b/middlewares/admin.py @@ -3,16 +3,16 @@ from typing import Any from aiogram import BaseMiddleware from aiogram.types import CallbackQuery, Message, TelegramObject -from cachetools import TTLCache from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from config import ADMIN_ID +from core.cache_config import ADMIN_CACHE_TTL_SEC +from core.redis_cache import cache_get, cache_key, cache_set from database.models import Admin -_ADMIN_CACHE_TTL = 60 -_admin_cache: TTLCache[int, bool] = TTLCache(maxsize=10_000, ttl=_ADMIN_CACHE_TTL) +_ADMIN_CACHE_TTL = ADMIN_CACHE_TTL_SEC class AdminMiddleware(BaseMiddleware): @@ -55,16 +55,17 @@ class AdminMiddleware(BaseMiddleware): if user_id in self._admin_ids: return True - if user_id in _admin_cache: - return _admin_cache[user_id] + cached = await cache_get(cache_key("admin_access", user_id)) + if isinstance(cached, bool): + return cached if not session: - _admin_cache[user_id] = False + await cache_set(cache_key("admin_access", user_id), False, _ADMIN_CACHE_TTL) return False result = await session.execute(select(Admin).where(Admin.tg_id == user_id)) is_admin = result.scalar_one_or_none() is not None - _admin_cache[user_id] = is_admin + await cache_set(cache_key("admin_access", user_id), bool(is_admin), _ADMIN_CACHE_TTL) return is_admin except Exception: return False diff --git a/middlewares/ban_checker.py b/middlewares/ban_checker.py index f395cc55..074847f2 100644 --- a/middlewares/ban_checker.py +++ b/middlewares/ban_checker.py @@ -4,24 +4,48 @@ from typing import Any from aiogram import BaseMiddleware from aiogram.types import CallbackQuery, Message, TelegramObject, Update -from cachetools import TTLCache from pytz import timezone from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from config import ADMIN_ID, SUPPORT_CHAT_URL +from core.cache_config import BAN_CACHE_TTL_SEC +from core.redis_cache import cache_get, cache_key, cache_set +from database import async_session_maker from database.models import ManualBan from logger import logger TZ = timezone("Europe/Moscow") -_BAN_CACHE_TTL = 30 -_ban_cache: TTLCache[int, tuple[float, dict | None]] = TTLCache(maxsize=50_000, ttl=_BAN_CACHE_TTL) +_BAN_CACHE_TTL = BAN_CACHE_TTL_SEC class BanCheckerMiddleware(BaseMiddleware): """Проверка банов.""" + async def _load_ban_info(self, session: AsyncSession, tg_id: int) -> dict[str, Any] | None: + query = ( + select(ManualBan.reason, ManualBan.until) + .where( + ManualBan.tg_id == tg_id, + (ManualBan.until.is_(None)) | (ManualBan.until > datetime.utcnow()), + ) + .limit(1) + ) + result = await session.execute(query) + row = result.first() + if row: + reason, until = row + await cache_set( + cache_key("ban_status", tg_id), + {"has_ban": True, "reason": reason or "не указана", "until": until.isoformat() if until else None}, + _BAN_CACHE_TTL, + ) + return {"reason": reason or "не указана", "until": until} + + await cache_set(cache_key("ban_status", tg_id), {"has_ban": False}, _BAN_CACHE_TTL) + return None + async def __call__( self, handler: Callable[[TelegramObject, dict[str, Any]], Awaitable[Any]], @@ -45,33 +69,30 @@ class BanCheckerMiddleware(BaseMiddleware): if tg_id is None: return await handler(event, data) - now_ts = datetime.utcnow().timestamp() - cached = _ban_cache.get(tg_id) - if cached and cached[0] > now_ts: - ban_info = cached[1] + cached = await cache_get(cache_key("ban_status", tg_id)) + if isinstance(cached, dict): + if not cached.get("has_ban"): + ban_info = None + else: + until_raw = cached.get("until") + until_parsed = None + if isinstance(until_raw, str): + try: + until_parsed = datetime.fromisoformat(until_raw) + except ValueError: + until_parsed = None + ban_info = { + "reason": cached.get("reason") or "не указана", + "until": until_parsed, + } else: session = data.get("session") - if not isinstance(session, AsyncSession): - logger.error("[BanChecker] session отсутствует в data") - return await handler(event, data) - - query = ( - select(ManualBan.reason, ManualBan.until) - .where( - ManualBan.tg_id == tg_id, - (ManualBan.until.is_(None)) | (ManualBan.until > datetime.utcnow()), - ) - .limit(1) - ) - result = await session.execute(query) - row = result.first() - if row: - reason, until = row - ban_info = {"reason": reason or "не указана", "until": until} + if session is not None and getattr(session, "execute", None) is not None: + ban_info = await self._load_ban_info(session, tg_id) else: - ban_info = None - - _ban_cache[tg_id] = (now_ts + _BAN_CACHE_TTL, ban_info) + async with async_session_maker() as short_session: + ban_info = await self._load_ban_info(short_session, tg_id) + await short_session.commit() if not ban_info: return await handler(event, data) diff --git a/middlewares/concurrency.py b/middlewares/concurrency.py index f583f00c..96f7ae13 100644 --- a/middlewares/concurrency.py +++ b/middlewares/concurrency.py @@ -6,6 +6,8 @@ from typing import Any from aiogram import BaseMiddleware, Bot from aiogram.types import CallbackQuery, Message, TelegramObject +from core.cache_config import CONCURRENCY_REJECT_NOTICE_TTL_SEC +from core.redis_cache import cache_key, cache_setnx from database.db import CONCURRENT_UPDATES_LIMIT, MAX_UPDATE_AGE_SEC @@ -17,6 +19,7 @@ class ConcurrencyLimiterMiddleware(BaseMiddleware): def __init__(self) -> None: self._semaphore = asyncio.Semaphore(CONCURRENT_UPDATES_LIMIT) + self._notice_ttl = CONCURRENCY_REJECT_NOTICE_TTL_SEC async def __call__( self, @@ -38,7 +41,13 @@ class ConcurrencyLimiterMiddleware(BaseMiddleware): async def _reject_stale(self, event: TelegramObject, data: dict[str, Any]) -> None: if isinstance(event, CallbackQuery): bot: Bot = data.get("bot") - if bot: + uid = event.from_user.id if event.from_user else None + should_notify = ( + bot + and uid is not None + and await cache_setnx(cache_key("concurrency_notice", uid), 1, self._notice_ttl) + ) + if should_notify: try: await bot.answer_callback_query( event.id, @@ -49,7 +58,13 @@ class ConcurrencyLimiterMiddleware(BaseMiddleware): pass elif isinstance(event, Message) and event.text and event.chat: bot: Bot = data.get("bot") - if bot: + uid = event.from_user.id if event.from_user else None + should_notify = ( + bot + and uid is not None + and await cache_setnx(cache_key("concurrency_notice", uid), 1, self._notice_ttl) + ) + if should_notify: try: await bot.send_message( event.chat.id, diff --git a/middlewares/direct_start_blocker.py b/middlewares/direct_start_blocker.py index e213e946..fc7e9133 100644 --- a/middlewares/direct_start_blocker.py +++ b/middlewares/direct_start_blocker.py @@ -1,20 +1,18 @@ -import time from collections.abc import Awaitable, Callable from typing import Any from aiogram import BaseMiddleware from aiogram.types import Message, Update -from cachetools import TTLCache -from sqlalchemy.ext.asyncio import AsyncSession from config import ADMIN_ID, DISABLE_DIRECT_START from core.bootstrap import MODES_CONFIG +from core.cache_config import DIRECT_START_USER_EXISTS_CACHE_TTL_SEC +from core.redis_cache import cache_get, cache_key, cache_set from database import check_user_exists from logger import logger -_TTL = 20 -_cache_user_exists: TTLCache[int, tuple[float, bool]] = TTLCache(maxsize=50_000, ttl=_TTL) +_TTL = DIRECT_START_USER_EXISTS_CACHE_TTL_SEC class DirectStartBlockerMiddleware(BaseMiddleware): @@ -50,24 +48,23 @@ class DirectStartBlockerMiddleware(BaseMiddleware): return await handler(event, data) session = data.get("session") - if not isinstance(session, AsyncSession): + if session is None or not hasattr(session, "execute"): return await handler(event, data) tg_id = message.from_user.id text = message.text.strip() - now = time.time() user_in_data = bool(data.get("user")) async def user_exists_cached() -> bool: if user_in_data: return True - cached = _cache_user_exists.get(tg_id) - if cached is not None and cached[0] > now: - return cached[1] + cached = await cache_get(cache_key("direct_start_user_exists", tg_id)) + if isinstance(cached, bool): + return cached exists = await check_user_exists(session, tg_id) - _cache_user_exists[tg_id] = (now + _TTL, exists) + await cache_set(cache_key("direct_start_user_exists", tg_id), bool(exists), _TTL) return exists if not text.startswith("/"): diff --git a/middlewares/runtime_config_sync.py b/middlewares/runtime_config_sync.py new file mode 100644 index 00000000..5e8e0469 --- /dev/null +++ b/middlewares/runtime_config_sync.py @@ -0,0 +1,21 @@ +from collections.abc import Awaitable, Callable +from typing import Any + +from aiogram import BaseMiddleware +from aiogram.types import TelegramObject + +from core.settings.runtime_sync import maybe_sync_runtime_configs + + +class RuntimeConfigSyncMiddleware(BaseMiddleware): + async def __call__( + self, + handler: Callable[[TelegramObject, dict[str, Any]], Awaitable[Any]], + event: TelegramObject, + data: dict[str, Any], + ) -> Any: + try: + await maybe_sync_runtime_configs() + except Exception: + pass + return await handler(event, data) diff --git a/middlewares/session.py b/middlewares/session.py index d2ee5112..e8497ae8 100644 --- a/middlewares/session.py +++ b/middlewares/session.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import time from typing import Any @@ -18,6 +20,11 @@ async def release_session_early(session: Any) -> bool: return False +def wrap_session(session: AsyncSession, maker) -> "_SessionProxy": + """Оборачивает сессию в прокси с release_early (для фоновых задач вроде periodic_notifications).""" + return _SessionProxy(session, maker, {}) + + class _SessionProxy: __slots__ = ("_session", "_maker", "_released", "_data") @@ -47,10 +54,15 @@ class _SessionProxy: import asyncio async with self._maker() as s: - result = getattr(s, method)(*args, **kwargs) - if asyncio.iscoroutine(result): - return await result - return result + try: + result = getattr(s, method)(*args, **kwargs) + if asyncio.iscoroutine(result): + result = await result + await s.commit() + return result + except Exception: + await s.rollback() + raise def __getattr__(self, name: str): if name in ("_session", "_maker", "_released", "_data", "release_early", "_with_short_session"): @@ -92,6 +104,7 @@ class SessionMiddleware(BaseMiddleware): proxy = _SessionProxy(session, self.sessionmaker, data) data["session"] = proxy committed = False + rolled_back = False try: result = await handler(event, data) if data.get("_session_released_early"): @@ -111,6 +124,7 @@ class SessionMiddleware(BaseMiddleware): exc_info=True, ) await self._rollback(session, "commit failure") + rolled_back = True return result except Exception as e: logger.warning( @@ -122,9 +136,10 @@ class SessionMiddleware(BaseMiddleware): exc_info=True, ) await self._rollback(session, "handler failure") + rolled_back = True raise finally: - if not committed and not data.get("_session_released_early"): + if not committed and not rolled_back and not data.get("_session_released_early"): try: await session.rollback() except Exception: diff --git a/middlewares/subscription.py b/middlewares/subscription.py index 86545189..bf480339 100644 --- a/middlewares/subscription.py +++ b/middlewares/subscription.py @@ -8,9 +8,13 @@ from aiogram.fsm.context import FSMContext from aiogram.types import InlineKeyboardButton, Message, Update from aiogram.utils.keyboard import InlineKeyboardBuilder -from bot import bot from config import CHANNEL_EXISTS, CHANNEL_ID, CHANNEL_REQUIRED, CHANNEL_URL from core.bootstrap import MODES_CONFIG +from core.cache_config import ( + SUBSCRIPTION_CACHE_SUBSCRIBED_TTL_SEC, + SUBSCRIPTION_CACHE_UNSUBSCRIBED_TTL_SEC, +) +from core.redis_cache import cache_delete, cache_get, cache_key, cache_set from handlers.buttons import SUB_CHANELL, SUB_CHANELL_DONE from handlers.texts import SUBSCRIPTION_REQUIRED_MSG from handlers.utils import edit_or_send_message @@ -18,6 +22,10 @@ from logger import logger class SubscriptionMiddleware(BaseMiddleware): + def __init__(self) -> None: + self._subscribed_ttl = SUBSCRIPTION_CACHE_SUBSCRIBED_TTL_SEC + self._unsubscribed_ttl = SUBSCRIPTION_CACHE_UNSUBSCRIBED_TTL_SEC + async def __call__( self, handler: Callable[[Update, dict[str, Any]], Awaitable[Any]], @@ -57,19 +65,51 @@ class SubscriptionMiddleware(BaseMiddleware): else: return await handler(event, data) + cached_status = await self._get_cached_status(tg_id) + if cached_status is False: + logger.info(f"[SubMiddleware] Пользователь {tg_id} не подписан (cache)") + await self._store_user_state(data, message, from_user) + return await self._ask_to_subscribe(message) + if cached_status is True: + return await handler(event, data) + + bot = data.get("bot") + if bot is None: + return await handler(event, data) + try: member = await bot.get_chat_member(CHANNEL_ID, tg_id) - if member.status not in ("member", "administrator", "creator"): + is_subscribed = member.status in ("member", "administrator", "creator") + await self._cache_status(tg_id, is_subscribed) + if not is_subscribed: logger.info(f"[SubMiddleware] Пользователь {tg_id} не подписан") await self._store_user_state(data, message, from_user) return await self._ask_to_subscribe(message) except (TelegramBadRequest, TelegramForbiddenError) as e: - logger.warning(f"[SubMiddleware] Ошибка при проверке подписки {tg_id}: {e}") - await self._store_user_state(data, message, from_user) - return await self._ask_to_subscribe(message) + logger.warning(f"[SubMiddleware] Ошибка проверки подписки {tg_id}, пропускаем: {e}") + return await handler(event, data) return await handler(event, data) + async def _get_cached_status(self, tg_id: int) -> bool | None: + subscribed_key = cache_key("subscribed", tg_id) + unsubscribed_key = cache_key("unsubscribed", tg_id) + if await cache_get(subscribed_key) is not None: + return True + if await cache_get(unsubscribed_key) is not None: + return False + return None + + async def _cache_status(self, tg_id: int, is_subscribed: bool) -> None: + subscribed_key = cache_key("subscribed", tg_id) + unsubscribed_key = cache_key("unsubscribed", tg_id) + if is_subscribed: + await cache_delete(unsubscribed_key) + await cache_set(subscribed_key, 1, self._subscribed_ttl) + else: + await cache_delete(subscribed_key) + await cache_set(unsubscribed_key, 1, self._unsubscribed_ttl) + async def _store_user_state(self, data: dict, message: Message, from_user): state: FSMContext = data.get("state") if not state or not from_user or from_user.is_bot: diff --git a/middlewares/throttling.py b/middlewares/throttling.py index 00099031..edb2662c 100644 --- a/middlewares/throttling.py +++ b/middlewares/throttling.py @@ -1,12 +1,18 @@ from aiogram import BaseMiddleware, Bot from aiogram.types import CallbackQuery -from cachetools import TTLCache + +from core.cache_config import ( + THROTTLE_CACHE_TTL_SEC, + THROTTLE_NOTICE_TTL_SEC, +) +from core.redis_cache import cache_incr, cache_key, cache_setnx +from hashlib import sha1 class ThrottlingMiddleware(BaseMiddleware): def __init__(self) -> None: - self.cache = TTLCache(maxsize=50_000, ttl=1.0) - self.throttle_notice_cache = TTLCache(maxsize=50_000, ttl=1.0) + self._counter_ttl = THROTTLE_CACHE_TTL_SEC + self._notice_ttl = THROTTLE_NOTICE_TTL_SEC async def __call__(self, handler, event, data): if not isinstance(event, CallbackQuery): @@ -17,11 +23,13 @@ class ThrottlingMiddleware(BaseMiddleware): return await handler(event, data) key = (user_id, event.data or "") - current_count = self.cache.get(key, 0) + key_hash = sha1(key[1].encode("utf-8")).hexdigest() + counter_key = cache_key("throttle_counter", user_id, key_hash) + current_count = await cache_incr(counter_key, self._counter_ttl) if current_count >= 2: - if key not in self.throttle_notice_cache: - self.throttle_notice_cache[key] = None + notice_key = cache_key("throttle_notice", user_id, key_hash) + if await cache_setnx(notice_key, 1, self._notice_ttl): bot: Bot = data["bot"] await bot.answer_callback_query( callback_query_id=event.id, @@ -30,5 +38,4 @@ class ThrottlingMiddleware(BaseMiddleware): ) return - self.cache[key] = current_count + 1 return await handler(event, data) diff --git a/middlewares/user.py b/middlewares/user.py index 9c4ea258..18d2011f 100644 --- a/middlewares/user.py +++ b/middlewares/user.py @@ -5,10 +5,10 @@ from typing import Any from aiogram import BaseMiddleware from aiogram.types import TelegramObject, User -from cachetools import TTLCache from sqlalchemy import update from sqlalchemy.ext.asyncio import AsyncSession +from core.redis_cache import cache_get, cache_key, cache_set from database import upsert_user from database.models import User as DbUser from logger import logger @@ -17,9 +17,7 @@ from logger import logger class UserMiddleware(BaseMiddleware): def __init__(self, debounce_sec: float = 60.0, cache_maxsize: int = 100_000) -> None: self._debounce = float(debounce_sec) - self._cache: TTLCache[int, tuple[str, float, float, dict | None]] = TTLCache( - maxsize=cache_maxsize, ttl=debounce_sec * 2 - ) + self._cache_ttl = debounce_sec * 2 async def __call__( self, @@ -31,7 +29,7 @@ class UserMiddleware(BaseMiddleware): user: User | None = data.get("event_from_user") if user and not user.is_bot: session = data.get("session") - if isinstance(session, AsyncSession): + if session is not None and getattr(session, "execute", None) is not None: db_user = await self._process_user(user, session) if db_user: data["user"] = db_user @@ -43,15 +41,28 @@ class UserMiddleware(BaseMiddleware): uid = user.id fingerprint = self._fingerprint(user) now = monotonic() + key = cache_key("user_middleware", uid) - cached = self._cache.get(uid) - if cached: - cached_fingerprint, profile_ts, touch_ts, cached_db_user = cached + cached = await cache_get(key) + if isinstance(cached, dict): + cached_fingerprint = str(cached.get("fingerprint") or "") + profile_ts = float(cached.get("profile_ts") or 0.0) + touch_ts = float(cached.get("touch_ts") or 0.0) + cached_db_user = cached.get("db_user") if fingerprint == cached_fingerprint: if now - touch_ts >= self._debounce: db_user = await self._touch_user(uid, session) - self._cache[uid] = (cached_fingerprint, profile_ts, now, db_user or cached_db_user) + await cache_set( + key, + { + "fingerprint": cached_fingerprint, + "profile_ts": profile_ts, + "touch_ts": now, + "db_user": db_user or cached_db_user, + }, + self._cache_ttl, + ) return db_user or cached_db_user if now - profile_ts < self._debounce: @@ -67,7 +78,16 @@ class UserMiddleware(BaseMiddleware): session=session, only_if_exists=True, ) - self._cache[uid] = (fingerprint, now, now, db_user) + await cache_set( + key, + { + "fingerprint": fingerprint, + "profile_ts": now, + "touch_ts": now, + "db_user": db_user, + }, + self._cache_ttl, + ) return db_user async def _touch_user(self, tg_id: int, session: AsyncSession) -> dict | None: diff --git a/panels/remnawave_runtime.py b/panels/remnawave_runtime.py new file mode 100644 index 00000000..3b9302e4 --- /dev/null +++ b/panels/remnawave_runtime.py @@ -0,0 +1,208 @@ +import asyncio +from collections.abc import Awaitable, Callable +from typing import Any + +from sqlalchemy.ext.asyncio import AsyncSession + +from config import REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD, REMNAWAVE_TOKEN_LOGIN_ENABLED +from core.cache_config import ( + REMNAWAVE_MAX_CONCURRENCY, + REMNAWAVE_ACTION_TIMEOUT_SEC, + REMNAWAVE_PROFILE_CACHE_TTL_SEC, + REMNAWAVE_PROFILE_TIMEOUT_SEC, + REMNAWAVE_SERVER_CACHE_TTL_SEC, +) +from core.redis_cache import cache_delete_pattern, cache_get, cache_key, cache_set +from database import get_servers +from logger import logger +from panels.remnawave import RemnawaveAPI + +_remnawave_semaphore = asyncio.Semaphore(REMNAWAVE_MAX_CONCURRENCY) + + +def invalidate_remnawave_profile_cache(*, api_url: str | None = None, client_id: str | None = None) -> None: + """Invalidate cached Remnawave profiles by api_url/client_id (or both).""" + import asyncio + + async def _invalidate_async() -> None: + if api_url is None and client_id is None: + await cache_delete_pattern("remna_profile:*") + return + if api_url is not None and client_id is not None: + await cache_delete_pattern(f"remna_profile:{api_url}:{client_id}") + return + if api_url is not None: + await cache_delete_pattern(f"remna_profile:{api_url}:*") + return + await cache_delete_pattern(f"remna_profile:*:{client_id}") + + try: + loop = asyncio.get_running_loop() + loop.create_task(_invalidate_async()) + except RuntimeError: + return + + +async def resolve_remnawave_api_url( + session: AsyncSession, + server_ref: str, + *, + fallback_any: bool = False, +) -> str | None: + ckey = cache_key("remna_server", str(server_ref), int(bool(fallback_any))) + cached_api_url = await cache_get(ckey) + if isinstance(cached_api_url, str) or cached_api_url is None: + if cached_api_url is not None: + return cached_api_url + + servers = await get_servers(session) + ref = str(server_ref) + remna_server = None + + cluster_servers = servers.get(ref) or servers.get(str(ref)) or [] + remna_server = next((srv for srv in cluster_servers if srv.get("panel_type") == "remnawave"), None) + + if remna_server is None: + for cluster_name, cluster in servers.items(): + for srv in cluster: + if (srv.get("server_name") == ref or str(cluster_name) == ref) and srv.get("panel_type") == "remnawave": + remna_server = srv + break + if remna_server: + break + + if remna_server is None and fallback_any: + remna_server = next((srv for cluster in servers.values() for srv in cluster if srv.get("panel_type") == "remnawave"), None) + + api_url = remna_server.get("api_url") if remna_server else None + await cache_set(ckey, api_url, REMNAWAVE_SERVER_CACHE_TTL_SEC) + return api_url + + +async def get_remnawave_profile( + session: AsyncSession, + server_ref: str, + client_id: str, + *, + fallback_any: bool = False, +) -> dict[str, Any] | None: + api_url = await resolve_remnawave_api_url(session, server_ref, fallback_any=fallback_any) + if not api_url: + return None + + pkey = cache_key("remna_profile", api_url, client_id) + cached_profile = await cache_get(pkey) + if isinstance(cached_profile, dict) or cached_profile is None: + if cached_profile is not None: + return cached_profile + + profile: dict[str, Any] | None = None + + async with _remnawave_semaphore: + api = RemnawaveAPI(api_url) + try: + logged_in = True + if not REMNAWAVE_TOKEN_LOGIN_ENABLED: + logged_in = await asyncio.wait_for( + api.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD), + timeout=REMNAWAVE_PROFILE_TIMEOUT_SEC, + ) + if not logged_in: + await cache_set(pkey, None, REMNAWAVE_PROFILE_CACHE_TTL_SEC) + return None + + devices = await asyncio.wait_for( + api.get_user_hwid_devices(client_id), + timeout=REMNAWAVE_PROFILE_TIMEOUT_SEC, + ) + user_data = await asyncio.wait_for( + api.get_user_by_uuid(client_id), + timeout=REMNAWAVE_PROFILE_TIMEOUT_SEC, + ) + + hwid_count = len(devices or []) + used_gb = None + traffic_limit_bytes = None + hwid_device_limit = None + + if user_data: + user_traffic = user_data.get("userTraffic", {}) + used_bytes = user_traffic.get("usedTrafficBytes", 0) + used_gb = round(used_bytes / 1073741824, 1) + traffic_limit_bytes = user_data.get("trafficLimitBytes") + hwid_device_limit = user_data.get("hwidDeviceLimit") + + profile = { + "api_url": api_url, + "hwid_count": hwid_count, + "used_gb": used_gb, + "traffic_limit_bytes": traffic_limit_bytes, + "hwid_device_limit": hwid_device_limit, + } + except asyncio.TimeoutError: + logger.warning(f"[Remnawave] Таймаут профиля для client_id={client_id}") + profile = None + except Exception as e: + logger.warning(f"[Remnawave] Ошибка профиля для client_id={client_id}: {e}") + profile = None + finally: + if hasattr(api, "aclose"): + try: + await api.aclose() + except Exception: + pass + + await cache_set(pkey, profile, REMNAWAVE_PROFILE_CACHE_TTL_SEC) + return profile + + +async def invalidate_remnawave_profile( + session: AsyncSession, + server_ref: str, + client_id: str, + *, + fallback_any: bool = False, +) -> None: + api_url = await resolve_remnawave_api_url(session, server_ref, fallback_any=fallback_any) + if api_url: + invalidate_remnawave_profile_cache(api_url=api_url, client_id=client_id) + else: + invalidate_remnawave_profile_cache(client_id=client_id) + + +async def with_remnawave_api( + session: AsyncSession, + server_ref: str, + operation: Callable[[RemnawaveAPI], Awaitable[Any]], + *, + fallback_any: bool = False, + timeout_sec: float = REMNAWAVE_ACTION_TIMEOUT_SEC, +) -> Any | None: + api_url = await resolve_remnawave_api_url(session, server_ref, fallback_any=fallback_any) + if not api_url: + return None + + async with _remnawave_semaphore: + api = RemnawaveAPI(api_url) + try: + logged_in = True + if not REMNAWAVE_TOKEN_LOGIN_ENABLED: + logged_in = await asyncio.wait_for( + api.login(REMNAWAVE_LOGIN, REMNAWAVE_PASSWORD), + timeout=timeout_sec, + ) + if not logged_in: + return None + return await asyncio.wait_for(operation(api), timeout=timeout_sec) + except asyncio.TimeoutError: + logger.warning(f"[Remnawave] Таймаут операции для server_ref={server_ref}") + return None + except Exception as e: + logger.warning(f"[Remnawave] Ошибка операции для server_ref={server_ref}: {e}") + return None + finally: + if hasattr(api, "aclose"): + try: + await api.aclose() + except Exception: + pass diff --git a/requirements.txt b/requirements.txt index 171832df..675cb6a3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -50,6 +50,7 @@ python-dateutil==2.9.0.post0 pytz==2025.1 qrcode==8.2 requests==2.32.4 +redis==5.2.0 rich==14.1.0 robokassa==0.3.2 ruff==0.9.5 diff --git a/servers.py b/servers.py index 63b9f90d..5b312ba7 100644 --- a/servers.py +++ b/servers.py @@ -7,11 +7,11 @@ from datetime import datetime, timedelta from aiogram.types import InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder from ping3 import ping -from sqlalchemy.ext.asyncio import AsyncSession from bot import bot from config import ADMIN_ID, PING_TIME -from database import get_servers +from core.executor import get_thread_pool +from database import async_session_maker, get_servers from handlers.admin.servers.keyboard import AdminServerCallback from logger import logger @@ -22,10 +22,19 @@ notified_servers = set() PING_SEMAPHORE = asyncio.Semaphore(3) +def _sync_ping(server_ip: str, timeout: float = 3): + """Синхронный ping для вызова в пуле потоков.""" + return ping(server_ip, timeout=timeout) + + async def ping_server(server_ip: str) -> bool: async with PING_SEMAPHORE: try: - response = await asyncio.to_thread(ping, server_ip, timeout=3) + loop = asyncio.get_running_loop() + response = await loop.run_in_executor( + get_thread_pool(), + lambda: _sync_ping(server_ip, 3), + ) if response is not None and response is not False: return True return await check_tcp_connection(server_ip, 443) @@ -86,13 +95,15 @@ async def notify_admin(server_name: str, status: str, down_duration: timedelta = await bot.send_message(admin_id, message, reply_markup=builder.as_markup()) -async def check_servers(session: AsyncSession): +async def check_servers(sessionmaker=None): """ Периодическая проверка серверов. - Использует asyncio.gather() для ускорения. + Использует короткую сессию на итерацию, чтобы не держать транзакцию во время ping. """ + maker = sessionmaker or async_session_maker while True: - servers = await get_servers(session=session) + async with maker() as session: + servers = await get_servers(session=session) current_time = datetime.now() tasks = [] diff --git a/utils/backup.py b/utils/backup.py index bec949fb..005fb8a3 100644 --- a/utils/backup.py +++ b/utils/backup.py @@ -10,7 +10,6 @@ import aiofiles from aiogram import Bot from aiogram.types import BufferedInputFile -from bot import bot from config import ( ADMIN_ID, BACKUP_CAPTION, @@ -36,17 +35,23 @@ from logger import logger async def backup_database() -> Exception | None: """ Создает резервную копию базы данных (или полный архив) и отправляет его администраторам. + Блокирующие операции (pg_dump и т.д.) выполняются в пуле процессов, не блокируя event loop и используя другие ядра CPU. Returns: Optional[Exception]: Исключение в случае ошибки или None при успешном выполнении """ + import asyncio + from core.executor import get_process_pool + + loop = asyncio.get_event_loop() + pool = get_process_pool() if BACKUP_CREATE_ARCHIVE: if not any([BACKUP_INCLUDE_DB, BACKUP_INCLUDE_CONFIG, BACKUP_INCLUDE_TEXTS, BACKUP_INCLUDE_IMG]): - backup_file_path, exception = _create_database_backup() + backup_file_path, exception = await loop.run_in_executor(pool, _create_database_backup) else: - backup_file_path, exception = _create_backup_archive() + backup_file_path, exception = await loop.run_in_executor(pool, _create_backup_archive) else: - backup_file_path, exception = _create_database_backup() + backup_file_path, exception = await loop.run_in_executor(pool, _create_database_backup) if exception: logger.error(f"Ошибка при создании бэкапа: {exception}") @@ -74,11 +79,12 @@ def _create_database_backup() -> tuple[str | None, Exception | None]: Tuple[Optional[str], Optional[Exception]]: Путь к файлу бэкапа и исключение (если произошла ошибка) """ date_formatted = datetime.now().strftime("%Y-%m-%d-%H%M%S") + pid_suffix = os.getpid() backup_dir = Path(BACK_DIR) backup_dir.mkdir(parents=True, exist_ok=True) - filename = backup_dir / f"{DB_NAME}-backup-{date_formatted}.sql" + filename = backup_dir / f"{DB_NAME}-backup-{date_formatted}-{pid_suffix}.sql" try: os.environ["PGPASSWORD"] = DB_PASSWORD @@ -123,10 +129,11 @@ def _create_backup_archive() -> tuple[str | None, Exception | None]: Tuple[Optional[str], Optional[Exception]]: Путь к файлу архива и исключение (если произошла ошибка) """ date_formatted = datetime.now().strftime("%Y-%m-%d-%H%M%S") + pid_suffix = os.getpid() backup_dir = Path(BACK_DIR) backup_dir.mkdir(parents=True, exist_ok=True) - archive_path = backup_dir / f"{DB_NAME}-full-backup-{date_formatted}.tar.gz" + archive_path = backup_dir / f"{DB_NAME}-full-backup-{date_formatted}-{pid_suffix}.tar.gz" project_root = Path(__file__).parent.parent archive_folder = f"backup-{date_formatted}" @@ -242,6 +249,8 @@ async def _send_backup_to_admins(backup_file_path: str) -> None: if not backup_file_path or not os.path.exists(backup_file_path): raise FileNotFoundError(f"Файл бэкапа не найден: {backup_file_path}") + from bot import bot + async def send_default(): for admin_id in ADMIN_ID: try: diff --git a/utils/button_icons.py b/utils/button_icons.py index ba17cf25..97775b99 100644 --- a/utils/button_icons.py +++ b/utils/button_icons.py @@ -3,7 +3,6 @@ from __future__ import annotations import aiogram.types from pydantic import ConfigDict - _UniqueGiftColors = getattr(aiogram.types, "UniqueGiftColors", None) if _UniqueGiftColors is not None: _cfg = getattr(_UniqueGiftColors, "model_config", None) diff --git a/utils/errors.py b/utils/errors.py index 82e398e8..0e2f81eb 100644 --- a/utils/errors.py +++ b/utils/errors.py @@ -97,6 +97,7 @@ def setup_error_handlers(dp: Dispatcher) -> None: admin=False, captcha=False, ) + await session.commit() elif event.update.callback_query: fsm_context = dp.fsm.get_context( bot=bot, @@ -111,6 +112,7 @@ def setup_error_handlers(dp: Dispatcher) -> None: admin=False, captcha=False, ) + await session.commit() except Exception as e: logger.error(f"Ошибка при показе стартового меню после ошибки: {e}", exc_info=True) @@ -150,6 +152,7 @@ def setup_error_handlers(dp: Dispatcher) -> None: admin=False, captcha=False, ) + await session.commit() elif event.update.callback_query: fsm_context = dp.fsm.get_context( bot=bot, @@ -164,6 +167,7 @@ def setup_error_handlers(dp: Dispatcher) -> None: admin=False, captcha=False, ) + await session.commit() except TelegramBadRequest as exception: logger.warning(f"Не удалось отправить детали ошибки: {exception}")