33 lines
841 B
Python
33 lines
841 B
Python
from __future__ import annotations
|
|
|
|
from apscheduler.schedulers.background import BackgroundScheduler
|
|
|
|
from .reporting import send_due_reports
|
|
from .settings import get_bool_setting
|
|
|
|
_scheduler: BackgroundScheduler | None = None
|
|
|
|
|
|
def get_scheduler() -> BackgroundScheduler:
|
|
global _scheduler
|
|
if _scheduler is None:
|
|
_scheduler = BackgroundScheduler(timezone='UTC')
|
|
return _scheduler
|
|
|
|
|
|
def start_scheduler(app) -> None:
|
|
if app.config.get('TESTING'):
|
|
return
|
|
if not get_bool_setting('report_scheduler_enabled', False):
|
|
return
|
|
scheduler = get_scheduler()
|
|
if scheduler.running:
|
|
return
|
|
|
|
def _job():
|
|
with app.app_context():
|
|
send_due_reports()
|
|
|
|
scheduler.add_job(_job, 'interval', minutes=60, id='send_due_reports', replace_existing=True)
|
|
scheduler.start()
|