first commit
This commit is contained in:
32
app/services/scheduler.py
Normal file
32
app/services/scheduler.py
Normal file
@@ -0,0 +1,32 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user