generated from coulomb/repo-seed
Add admin sync hot reload path
This commit is contained in:
@@ -46,8 +46,7 @@ from activity_core.activities import (
|
||||
)
|
||||
from activity_core.db import make_engine
|
||||
from sqlalchemy.ext.asyncio import async_sessionmaker
|
||||
from activity_core.sync_activity_definitions import sync as sync_activity_defs
|
||||
from activity_core.sync_schedules import sync as sync_schedules
|
||||
from activity_core.sync_service import run_sync
|
||||
from activity_core.workflows import RunActivityWorkflow, TaskExecutorWorkflow
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -77,20 +76,26 @@ async def run() -> None:
|
||||
TEMPORAL_HOST, namespace=TEMPORAL_NAMESPACE, runtime=runtime
|
||||
)
|
||||
|
||||
# T45: Sync ActivityDefinition files into DB before schedule sync.
|
||||
logger.info("Syncing ActivityDefinition files...")
|
||||
logger.info("Syncing ActivityDefinitions and Temporal Schedules...")
|
||||
sync_engine = make_engine(db_url)
|
||||
session_factory = async_sessionmaker(sync_engine, expire_on_commit=False)
|
||||
try:
|
||||
session_factory = async_sessionmaker(make_engine(db_url), expire_on_commit=False)
|
||||
await sync_activity_defs(session_factory)
|
||||
except Exception:
|
||||
logger.exception("activity definition sync failed — continuing worker startup")
|
||||
|
||||
# T23: Sync Temporal Schedules with the DB before workers start accepting tasks.
|
||||
logger.info("Syncing Temporal Schedules with ActivityDefinition DB...")
|
||||
try:
|
||||
await sync_schedules(client, db_url)
|
||||
except Exception:
|
||||
logger.exception("schedule sync failed — continuing worker startup")
|
||||
sync_result = await run_sync(
|
||||
session_factory=session_factory,
|
||||
temporal_client=client,
|
||||
definitions=True,
|
||||
schedules=True,
|
||||
event_types=False,
|
||||
)
|
||||
for error in sync_result["errors"]:
|
||||
logger.error(
|
||||
"startup sync %s failed — %s: %s",
|
||||
error["stage"],
|
||||
error["type"],
|
||||
error["message"],
|
||||
)
|
||||
finally:
|
||||
await sync_engine.dispose()
|
||||
|
||||
orchestrator_worker = Worker(
|
||||
client,
|
||||
|
||||
Reference in New Issue
Block a user