自动排队生成量化因子挖掘任务,心跳派发后将高 IC 因子入库。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user