Refactor blocklist schedule management into service
This commit is contained in:
@@ -18,7 +18,6 @@ from typing import TYPE_CHECKING, Any
|
||||
import structlog
|
||||
|
||||
from app.db import open_db
|
||||
from app.models.blocklist import ScheduleFrequency
|
||||
from app.services import blocklist_service, jail_service
|
||||
from app.utils.runtime_state import get_effective_settings
|
||||
|
||||
@@ -130,46 +129,11 @@ def _apply_schedule(app: FastAPI, config: Any) -> None:
|
||||
app: FastAPI application instance.
|
||||
config: :class:`~app.models.blocklist.ScheduleConfig` to apply.
|
||||
"""
|
||||
scheduler = app.state.scheduler
|
||||
from app.services import blocklist_service
|
||||
|
||||
kwargs: dict[str, Any] = {
|
||||
"settings": get_effective_settings(app),
|
||||
"http_session": app.state.http_session,
|
||||
}
|
||||
trigger_type: str
|
||||
trigger_kwargs: dict[str, Any]
|
||||
|
||||
if config.frequency == ScheduleFrequency.hourly:
|
||||
trigger_type = "interval"
|
||||
trigger_kwargs = {"hours": config.interval_hours}
|
||||
elif config.frequency == ScheduleFrequency.weekly:
|
||||
trigger_type = "cron"
|
||||
trigger_kwargs = {
|
||||
"day_of_week": config.day_of_week,
|
||||
"hour": config.hour,
|
||||
"minute": config.minute,
|
||||
}
|
||||
else: # daily (default)
|
||||
trigger_type = "cron"
|
||||
trigger_kwargs = {
|
||||
"hour": config.hour,
|
||||
"minute": config.minute,
|
||||
}
|
||||
|
||||
# Remove existing job if it exists, then add new one.
|
||||
if scheduler.get_job(JOB_ID):
|
||||
scheduler.remove_job(JOB_ID)
|
||||
|
||||
scheduler.add_job(
|
||||
_run_import_with_resources,
|
||||
trigger=trigger_type,
|
||||
id=JOB_ID,
|
||||
kwargs=kwargs,
|
||||
**trigger_kwargs,
|
||||
)
|
||||
log.info(
|
||||
"blocklist_import_scheduled",
|
||||
frequency=config.frequency,
|
||||
trigger=trigger_type,
|
||||
trigger_kwargs=trigger_kwargs,
|
||||
blocklist_service.schedule_blocklist_job(
|
||||
app.state.scheduler,
|
||||
get_effective_settings(app),
|
||||
app.state.http_session,
|
||||
config,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user