feat(activities): implement load_activity_definition — T14

activities.py:
- init_session_factory(url): module-level async_sessionmaker init,
  called once from worker.py before workers start
- load_activity_definition(activity_id): queries activity_definitions
  by UUID, returns JSON-serialisable dict; raises ApplicationError
  (non_retryable=True) if row not found

worker.py:
- reads ACTCORE_DB_URL at startup, fails fast if missing
- calls init_session_factory() before connecting to Temporal

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-26 22:02:15 +00:00
parent 21edc313db
commit 5e4dc6c946
3 changed files with 72 additions and 8 deletions

View File

@@ -24,6 +24,7 @@ from temporalio.client import Client
from temporalio.worker import Worker
from activity_core.activities import (
init_session_factory,
load_activity_definition,
log_run,
resolve_context,
@@ -38,6 +39,11 @@ TASK_EXECUTION_TASK_QUEUE = "task-execution-tq"
async def run() -> None:
db_url = os.environ.get("ACTCORE_DB_URL")
if not db_url:
raise RuntimeError("ACTCORE_DB_URL is required")
init_session_factory(db_url)
client = await Client.connect(TEMPORAL_HOST, namespace=TEMPORAL_NAMESPACE)
orchestrator_worker = Worker(