perf(autocall): таймер 60с + fast-path (молча, если очередь пуста и кампания выключена)
This commit is contained in:
parent
5e4bfc1af0
commit
95af771596
|
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=SuperSam Autocall Scheduler Timer
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=60
|
||||||
|
OnUnitActiveSec=60
|
||||||
|
AccuracySec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
|
|
@ -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):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue