perf(autocall): таймер 60с + fast-path (молча, если очередь пуста и кампания выключена)

This commit is contained in:
Hermes 2026-09-02 11:42:58 +02:00
parent 5e4bfc1af0
commit 95af771596
2 changed files with 22 additions and 0 deletions

View File

@ -0,0 +1,10 @@
[Unit]
Description=SuperSam Autocall Scheduler Timer
[Timer]
OnBootSec=60
OnUnitActiveSec=60
AccuracySec=5
[Install]
WantedBy=timers.target

View File

@ -270,11 +270,23 @@ def process_queue(conn, settings):
return pushed return pushed
def has_pending_items(conn):
"""Дёшево: есть ли непрочитанные ручные запросы. Для fast-path, чтобы не шуметь в логе."""
with conn.cursor() as cur:
cur.execute("SELECT 1 FROM autocall_queue WHERE processed_at IS NULL LIMIT 1")
return cur.fetchone() is not None
def main(): def main():
conn = get_db_conn() conn = get_db_conn()
try: try:
settings = load_settings(conn) settings = load_settings(conn)
# Fast-path: если кампания выключена и очередь пуста — выходим молча.
# Таймер стучит каждую минуту; при 1440 тиках/сутки не хотим шум в логе.
if not settings.get("enabled", False) and not has_pending_items(conn):
return
# 0) Ручные звонки «Позвонить сейчас» — даже если кампания выключена, # 0) Ручные звонки «Позвонить сейчас» — даже если кампания выключена,
# но в рабочее время и enabled_or_queue. Ручной запрос — явный сигнал. # но в рабочее время и enabled_or_queue. Ручной запрос — явный сигнал.
if is_work_time(settings): if is_work_time(settings):