feat: register daily collection job at 18:00 in scheduler
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
f13be37470
commit
9b4d678995
@ -2,5 +2,9 @@
|
||||
Background jobs module.
|
||||
"""
|
||||
from jobs.scheduler import scheduler, start_scheduler, stop_scheduler
|
||||
from jobs.collection_job import run_daily_collection, run_backfill
|
||||
|
||||
__all__ = ["scheduler", "start_scheduler", "stop_scheduler"]
|
||||
__all__ = [
|
||||
"scheduler", "start_scheduler", "stop_scheduler",
|
||||
"run_daily_collection", "run_backfill",
|
||||
]
|
||||
|
||||
@ -6,6 +6,7 @@ from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from apscheduler.triggers.cron import CronTrigger
|
||||
|
||||
from jobs.snapshot_job import create_daily_snapshots
|
||||
from jobs.collection_job import run_daily_collection
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@ -15,7 +16,21 @@ scheduler = BackgroundScheduler()
|
||||
|
||||
def configure_jobs():
|
||||
"""Configure scheduled jobs."""
|
||||
# Daily snapshot at 18:30 (after market close)
|
||||
# Daily data collection at 18:00 (after market close, before snapshot)
|
||||
scheduler.add_job(
|
||||
run_daily_collection,
|
||||
trigger=CronTrigger(
|
||||
hour=18,
|
||||
minute=0,
|
||||
day_of_week='mon-fri',
|
||||
),
|
||||
id='daily_collection',
|
||||
name='Collect daily market data',
|
||||
replace_existing=True,
|
||||
)
|
||||
logger.info("Configured daily_collection job at 18:00")
|
||||
|
||||
# Daily snapshot at 18:30 (after data collection completes)
|
||||
scheduler.add_job(
|
||||
create_daily_snapshots,
|
||||
trigger=CronTrigger(
|
||||
@ -27,7 +42,7 @@ def configure_jobs():
|
||||
name='Create daily portfolio snapshots',
|
||||
replace_existing=True,
|
||||
)
|
||||
logger.info("Configured daily_snapshots job")
|
||||
logger.info("Configured daily_snapshots job at 18:30")
|
||||
|
||||
|
||||
def start_scheduler():
|
||||
|
||||
@ -139,3 +139,21 @@ def test_run_backfill_with_existing_data_only_fills_gaps():
|
||||
# Last backward chunk should end at or before 2024-05-31
|
||||
backward_chunks = [r for r in price_ranges if r[1] <= "20240531"]
|
||||
assert len(backward_chunks) >= 1
|
||||
|
||||
|
||||
def test_scheduler_has_daily_collection_job():
|
||||
"""Scheduler should register a daily_collection job at 18:00."""
|
||||
from jobs.scheduler import configure_jobs
|
||||
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
test_scheduler = BackgroundScheduler()
|
||||
|
||||
with patch("jobs.scheduler.scheduler", test_scheduler):
|
||||
configure_jobs()
|
||||
|
||||
jobs = {job.id: job for job in test_scheduler.get_jobs()}
|
||||
assert "daily_collection" in jobs
|
||||
|
||||
trigger = jobs["daily_collection"].trigger
|
||||
trigger_str = str(trigger)
|
||||
assert "18" in trigger_str # hour=18
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user