Files
Solo_bot/core/cache_config.py
T

121 lines
5.3 KiB
Python

"""
Сводка по Redis: префиксы ключей и окна жизни (TTL).
Ключ/префикс │ TTL (сек) │ Назначение
──────────────────────────┼───────────┼────────────────────────────────────────
throttle_counter │ 1 │ Счётчик троттлинга (окно сброса)
throttle_notice │ 1 │ Показ уведомления «подождите»
concurrency_notice │ 5 │ Сообщение «слишком много запросов»
utm_exists │ 300 │ UTM-код уже обработан (старт)
user_middleware │ 60 │ Снапшот пользователя (debounce*2)
user_snapshot │ 30 │ Снапшот пользователя
user_exists │ 60 │ Пользователь есть в БД
balance │ 25 │ Баланс в профиле
profile_data │ 25 │ Данные профиля
key_count │ 25 │ Количество ключей
ban_status │ 60 │ Статус бана
direct_start_user_exists │ 20 │ Пользователь есть (direct start blocker)
admin_access │ 60 │ Доступ в админку (да/нет)
remna_server │ 300 │ URL сервера Remnawave
remna_profile │ 20/45 │ Профиль Remnawave (45 при ошибке)
runtime_configs │ 86400 │ Рантайм-конфиг (1 сутки)
sub_response │ 20 │ Ответ подписки (subscription)
servers │ 60 │ Список серверов
tariff │ 120 │ Тариф по ID
tariffs_cluster │ 120 │ Тарифы по кластеру
keys_list │ 25 │ Список ключей
key_details │ 45 │ Детали ключа
key_email │ 45 │ email по client_id
payment_pending │ 3600 │ Ожидающий платёж (1 ч)
audit_history │ 300 │ История действий клиента (админка)
audit:flush │ — │ Буфер аудита (список для выгрузки в БД в 00:00)
audit:user:tg:* │ 25 ч │ События по tg_id для чтения до выгрузки
audit:user:identity:* │ 25 ч │ События по identity для чтения до выгрузки
webhook_abuse_fail │ 60 │ Счётчик неудачных вебхуков по IP
webhook_abuse_block │ 300 │ Блокировка IP по злоупотреблению
При недоступности Redis: повторная попытка подключения через 5 сек
(REDIS_BACKOFF_SEC в redis_cache).
"""
UPDATE_STALE_AGE_SEC = 60
CONCURRENCY_MAX_WAIT_SEC = 300
CONCURRENCY_LIMIT = 200
SUBSCRIPTION_CACHE_SUBSCRIBED_MAXSIZE = 200_000
SUBSCRIPTION_CACHE_SUBSCRIBED_TTL_SEC = 600
SUBSCRIPTION_CACHE_UNSUBSCRIBED_MAXSIZE = 100_000
SUBSCRIPTION_CACHE_UNSUBSCRIBED_TTL_SEC = 60
SUBSCRIPTION_GET_CHAT_MEMBER_TIMEOUT_SEC = 4.0
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 = 60
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 = 10.0
REMNAWAVE_PROFILE_ERROR_CACHE_TTL_SEC = 45
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
KEY_DETAILS_CACHE_TTL_SEC = 45
KEYS_LIST_CACHE_TTL_SEC = 25
KEY_COUNT_CACHE_TTL_SEC = 25
BALANCE_CACHE_TTL_SEC = 25
PROFILE_DATA_CACHE_TTL_SEC = 25
PAYMENT_PENDING_CACHE_TTL_SEC = 3600
AUDIT_HISTORY_CACHE_TTL_SEC = 300
AUDIT_REDIS_BUFFER_ENABLED = True
AUDIT_REDIS_FLUSH_KEY = "audit:flush"
AUDIT_REDIS_USER_PREFIX = "audit:user:tg:"
AUDIT_REDIS_IDENTITY_PREFIX = "audit:user:identity:"
AUDIT_REDIS_USER_TTL_SEC = 25 * 3600
AUDIT_REDIS_DRAIN_BATCH = 1000
ERROR_THROTTLE_WINDOW_SEC = 60
ERROR_THROTTLE_MAX_KEYS = 500
ERROR_THROTTLE_MESSAGE_MAX_LEN = 120
WEBHOOK_ABUSE_FAIL_THRESHOLD = 10
WEBHOOK_ABUSE_FAIL_WINDOW_SEC = 60
WEBHOOK_ABUSE_BLOCK_TTL_SEC = 300