122 lines
3.8 KiB
Python
122 lines
3.8 KiB
Python
from core.tasks.cron_tasks import (
|
|
AUDIT_DRAIN_TRIGGER,
|
|
DAILY_STATS_REPORT_TRIGGER,
|
|
EXPIRED_GIFTS_CLEANUP_TRIGGER,
|
|
STALE_PAYMENTS_SWEEP_TRIGGER,
|
|
cleanup_expired_gifts_job,
|
|
cleanup_expired_gifts_process_runner,
|
|
scheduled_audit_drain,
|
|
scheduled_audit_drain_process_runner,
|
|
scheduled_stats_report,
|
|
scheduled_stats_report_process_runner,
|
|
sweep_stale_payments_job,
|
|
sweep_stale_payments_process_runner,
|
|
)
|
|
from core.tasks.loop_tasks import (
|
|
backup_loop,
|
|
backup_thread_loop,
|
|
blocked_drain_loop,
|
|
notifications_loop,
|
|
scheduled_broadcasts_loop_task,
|
|
server_checks_loop,
|
|
)
|
|
from core.tasks.periodic_manager import periodic_task_manager
|
|
|
|
|
|
_TASKS_REGISTERED = False
|
|
|
|
|
|
def register_periodic_tasks() -> None:
|
|
global _TASKS_REGISTERED
|
|
if _TASKS_REGISTERED:
|
|
return
|
|
from config import PROCESS_POOL_SIZE
|
|
|
|
process_budget = max(0, int(PROCESS_POOL_SIZE) if int(PROCESS_POOL_SIZE) > 1 else 0)
|
|
|
|
if process_budget > 0:
|
|
periodic_task_manager.register_process_loop_task("notifications", notifications_loop)
|
|
process_budget -= 1
|
|
else:
|
|
periodic_task_manager.register_loop_task("notifications", notifications_loop)
|
|
|
|
if process_budget > 0:
|
|
periodic_task_manager.register_process_loop_task("scheduled_broadcasts", scheduled_broadcasts_loop_task)
|
|
process_budget -= 1
|
|
else:
|
|
periodic_task_manager.register_loop_task("scheduled_broadcasts", scheduled_broadcasts_loop_task)
|
|
|
|
if process_budget > 0:
|
|
periodic_task_manager.register_process_loop_task("backup", backup_loop)
|
|
process_budget -= 1
|
|
else:
|
|
periodic_task_manager.register_thread_loop_task("backup", backup_thread_loop)
|
|
|
|
periodic_task_manager.register_loop_task("blocked_drain", blocked_drain_loop)
|
|
|
|
if process_budget > 0:
|
|
periodic_task_manager.register_process_loop_task("server_checks", server_checks_loop)
|
|
process_budget -= 1
|
|
else:
|
|
periodic_task_manager.register_loop_task("server_checks", server_checks_loop)
|
|
|
|
periodic_task_manager.set_scheduler_process_workers(process_budget)
|
|
|
|
if process_budget > 0:
|
|
periodic_task_manager.register_cron_task(
|
|
"audit_drain_midnight",
|
|
scheduled_audit_drain_process_runner,
|
|
AUDIT_DRAIN_TRIGGER,
|
|
execution_mode="process",
|
|
)
|
|
else:
|
|
periodic_task_manager.register_cron_task(
|
|
"audit_drain_midnight",
|
|
scheduled_audit_drain,
|
|
AUDIT_DRAIN_TRIGGER,
|
|
)
|
|
|
|
if process_budget > 0:
|
|
periodic_task_manager.register_cron_task(
|
|
"daily_stats_report",
|
|
scheduled_stats_report_process_runner,
|
|
DAILY_STATS_REPORT_TRIGGER,
|
|
execution_mode="process",
|
|
)
|
|
else:
|
|
periodic_task_manager.register_cron_task(
|
|
"daily_stats_report",
|
|
scheduled_stats_report,
|
|
DAILY_STATS_REPORT_TRIGGER,
|
|
)
|
|
|
|
if process_budget > 0:
|
|
periodic_task_manager.register_cron_task(
|
|
"sweep_stale_payments",
|
|
sweep_stale_payments_process_runner,
|
|
STALE_PAYMENTS_SWEEP_TRIGGER,
|
|
execution_mode="process",
|
|
)
|
|
else:
|
|
periodic_task_manager.register_cron_task(
|
|
"sweep_stale_payments",
|
|
sweep_stale_payments_job,
|
|
STALE_PAYMENTS_SWEEP_TRIGGER,
|
|
)
|
|
|
|
if process_budget > 0:
|
|
periodic_task_manager.register_cron_task(
|
|
"cleanup_expired_gifts",
|
|
cleanup_expired_gifts_process_runner,
|
|
EXPIRED_GIFTS_CLEANUP_TRIGGER,
|
|
execution_mode="process",
|
|
)
|
|
else:
|
|
periodic_task_manager.register_cron_task(
|
|
"cleanup_expired_gifts",
|
|
cleanup_expired_gifts_job,
|
|
EXPIRED_GIFTS_CLEANUP_TRIGGER,
|
|
)
|
|
|
|
_TASKS_REGISTERED = True
|