Reset to HoopScout v2 runtime foundation and simplified topology
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
from .celery import app as celery_app
|
||||
"""
|
||||
HoopScout v2 runtime package.
|
||||
|
||||
__all__ = ("celery_app",)
|
||||
Celery is intentionally not auto-loaded at import time in v2 foundation runtime.
|
||||
Legacy task modules remain in-repo and can be loaded explicitly if needed.
|
||||
"""
|
||||
|
||||
__all__ = ()
|
||||
|
||||
@ -28,12 +28,12 @@ def _parse_cron_expression(expression: str) -> dict[str, str]:
|
||||
|
||||
|
||||
def build_periodic_schedule() -> dict:
|
||||
if not settings.INGESTION_SCHEDULE_ENABLED:
|
||||
if not getattr(settings, "INGESTION_SCHEDULE_ENABLED", False):
|
||||
logger.info("Periodic ingestion schedule disabled by INGESTION_SCHEDULE_ENABLED=0.")
|
||||
return {}
|
||||
|
||||
try:
|
||||
schedule_kwargs = _parse_cron_expression(settings.INGESTION_SCHEDULE_CRON)
|
||||
schedule_kwargs = _parse_cron_expression(getattr(settings, "INGESTION_SCHEDULE_CRON", "*/30 * * * *"))
|
||||
return {
|
||||
"ingestion.scheduled_provider_sync": {
|
||||
"task": "apps.ingestion.tasks.scheduled_provider_sync",
|
||||
@ -44,7 +44,7 @@ def build_periodic_schedule() -> dict:
|
||||
logger.error(
|
||||
"Invalid periodic ingestion schedule config. Task disabled. "
|
||||
"INGESTION_SCHEDULE_CRON=%r error=%s",
|
||||
settings.INGESTION_SCHEDULE_CRON,
|
||||
getattr(settings, "INGESTION_SCHEDULE_CRON", ""),
|
||||
exc,
|
||||
)
|
||||
return {}
|
||||
|
||||
@ -142,23 +142,16 @@ LOGIN_URL = "users:login"
|
||||
LOGIN_REDIRECT_URL = "core:dashboard"
|
||||
LOGOUT_REDIRECT_URL = "core:home"
|
||||
|
||||
CELERY_BROKER_URL = os.getenv("CELERY_BROKER_URL", "redis://redis:6379/0")
|
||||
CELERY_RESULT_BACKEND = os.getenv("CELERY_RESULT_BACKEND", "redis://redis:6379/0")
|
||||
CELERY_ACCEPT_CONTENT = ["json"]
|
||||
CELERY_TASK_SERIALIZER = "json"
|
||||
CELERY_RESULT_SERIALIZER = "json"
|
||||
CELERY_TIMEZONE = TIME_ZONE
|
||||
CELERY_TASK_TIME_LIMIT = int(os.getenv("CELERY_TASK_TIME_LIMIT", "1800"))
|
||||
CELERY_TASK_SOFT_TIME_LIMIT = int(os.getenv("CELERY_TASK_SOFT_TIME_LIMIT", "1500"))
|
||||
INGESTION_SCHEDULE_ENABLED = env_bool("INGESTION_SCHEDULE_ENABLED", False)
|
||||
INGESTION_SCHEDULE_CRON = os.getenv("INGESTION_SCHEDULE_CRON", "*/30 * * * *").strip()
|
||||
INGESTION_SCHEDULE_PROVIDER_NAMESPACE = os.getenv("INGESTION_SCHEDULE_PROVIDER_NAMESPACE", "").strip()
|
||||
INGESTION_SCHEDULE_JOB_TYPE = os.getenv("INGESTION_SCHEDULE_JOB_TYPE", "incremental").strip().lower()
|
||||
INGESTION_PREVENT_OVERLAP = env_bool("INGESTION_PREVENT_OVERLAP", True)
|
||||
INGESTION_OVERLAP_WINDOW_MINUTES = int(os.getenv("INGESTION_OVERLAP_WINDOW_MINUTES", "180"))
|
||||
# HoopScout v2 snapshot storage (volume-backed directories).
|
||||
SNAPSHOT_INCOMING_DIR = os.getenv("SNAPSHOT_INCOMING_DIR", str(BASE_DIR / "snapshots" / "incoming"))
|
||||
SNAPSHOT_ARCHIVE_DIR = os.getenv("SNAPSHOT_ARCHIVE_DIR", str(BASE_DIR / "snapshots" / "archive"))
|
||||
SNAPSHOT_FAILED_DIR = os.getenv("SNAPSHOT_FAILED_DIR", str(BASE_DIR / "snapshots" / "failed"))
|
||||
|
||||
if INGESTION_SCHEDULE_JOB_TYPE not in {"incremental", "full_sync"}:
|
||||
raise ImproperlyConfigured("INGESTION_SCHEDULE_JOB_TYPE must be either 'incremental' or 'full_sync'.")
|
||||
# Optional scheduler command settings for future v2 snapshot jobs.
|
||||
SCHEDULER_ENABLED = env_bool("SCHEDULER_ENABLED", False)
|
||||
SCHEDULER_INTERVAL_SECONDS = int(os.getenv("SCHEDULER_INTERVAL_SECONDS", "900"))
|
||||
if SCHEDULER_INTERVAL_SECONDS < 30:
|
||||
raise ImproperlyConfigured("SCHEDULER_INTERVAL_SECONDS must be >= 30.")
|
||||
|
||||
PROVIDER_BACKEND = os.getenv("PROVIDER_BACKEND", "demo").strip().lower()
|
||||
PROVIDER_NAMESPACE_DEMO = os.getenv("PROVIDER_NAMESPACE_DEMO", "mvp_demo")
|
||||
|
||||
Reference in New Issue
Block a user