rebuild(stage-9): deliver deterministic intelligent screening
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import asyncio
|
||||
import logging
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
@@ -10,6 +11,7 @@ from backend.database.migrations import MIGRATIONS, MigrationRunner
|
||||
from backend.http.errors import install_error_handlers
|
||||
from backend.http.request_context import install_request_context
|
||||
from backend.http.router import api_router
|
||||
from backend.jobs.screener import run_screener_scheduler
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -34,7 +36,16 @@ def create_application(settings: Settings | None = None) -> FastAPI:
|
||||
},
|
||||
},
|
||||
)
|
||||
yield
|
||||
stop = asyncio.Event()
|
||||
task = None
|
||||
if runtime.environment != "test":
|
||||
task = asyncio.create_task(run_screener_scheduler(container.screener, stop))
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
if task:
|
||||
stop.set()
|
||||
await task
|
||||
|
||||
application = FastAPI(
|
||||
title="小白复盘",
|
||||
|
||||
@@ -19,6 +19,8 @@ from backend.features.accounts.service import (
|
||||
from backend.features.market import MarketService
|
||||
from backend.features.market.insights import MarketInsightService
|
||||
from backend.features.market.sync import MarketSnapshotService
|
||||
from backend.features.screener.repository import ScreenerRepository
|
||||
from backend.features.screener.service import ScreenerService
|
||||
from backend.security import PasswordHasher, load_or_create_cipher
|
||||
|
||||
|
||||
@@ -32,6 +34,7 @@ class ApplicationContainer:
|
||||
system_credentials: SystemCredentialService
|
||||
model_pool: ModelPoolService
|
||||
market: MarketService
|
||||
screener: ScreenerService
|
||||
|
||||
|
||||
def build_container(settings: Settings) -> ApplicationContainer:
|
||||
@@ -56,6 +59,11 @@ def build_container(settings: Settings) -> ApplicationContainer:
|
||||
),
|
||||
DataSourcePolicy(),
|
||||
)
|
||||
market = MarketService(
|
||||
gateway,
|
||||
MarketSnapshotService(database, market_repository, gateway),
|
||||
MarketInsightService(database, market_repository, gateway),
|
||||
)
|
||||
return ApplicationContainer(
|
||||
settings=settings,
|
||||
database=database,
|
||||
@@ -64,9 +72,6 @@ def build_container(settings: Settings) -> ApplicationContainer:
|
||||
memberships=MembershipService(database, account_repository),
|
||||
system_credentials=credentials,
|
||||
model_pool=ModelPoolService(database, model_pool_repository, cipher),
|
||||
market=MarketService(
|
||||
gateway,
|
||||
MarketSnapshotService(database, market_repository, gateway),
|
||||
MarketInsightService(database, market_repository, gateway),
|
||||
),
|
||||
market=market,
|
||||
screener=ScreenerService(database, ScreenerRepository(), market_repository, gateway),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user