自动排队生成量化因子挖掘任务,心跳派发后将高 IC 因子入库。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-11 01:49:16 +08:00
parent f0b35e6b34
commit 598cecad5f
11 changed files with 529 additions and 23 deletions
+22
View File
@@ -13,6 +13,7 @@ from zoneinfo import ZoneInfo
from app.config import settings
from app.database import session_scope
from app.jobs.daily_yield import run_daily_yield_cron
from app.services.alpha_queue import maybe_generate_alpha_batch
from app.services.heartbeat import mark_stale_nodes
from app.services.locks import acquire_lock
from app.services.tasks import dispatch_random_tasks
@@ -45,6 +46,13 @@ def start_scheduler() -> None:
replace_existing=True,
misfire_grace_time=120,
)
scheduler.add_job(
_guard(_alpha_job),
IntervalTrigger(hours=2, timezone=UTC),
id="alpha_batch",
replace_existing=True,
misfire_grace_time=600,
)
yield_zone = ZoneInfo(settings.yield_timezone)
scheduler.add_job(
_guard(_yield_job),
@@ -98,6 +106,20 @@ def _dispatch_job() -> None:
tasks = dispatch_random_tasks(session)
if tasks:
logger.info("dispatched %s tasks", len(tasks))
_refill_alpha_queue(force=False)
def _alpha_job() -> None:
_refill_alpha_queue(force=True)
def _refill_alpha_queue(force: bool) -> None:
if not acquire_lock("alpha_batch", timedelta(minutes=5)):
return
with session_scope() as session:
created = maybe_generate_alpha_batch(session, force=force)
if created:
logger.info("alpha batch slices=%s force=%s", len(created), force)
def _yield_job() -> None: