Files
asf/packages/asf-events/asf_events/job_events.py
T
2026-09-08 07:21:34 -04:00

45 lines
907 B
Python

"""Job lifecycle domain events."""
from __future__ import annotations
from typing import Any, Dict, Optional
from uuid import UUID
from asf_events.base import ASFEvent
class JobQueued(ASFEvent):
event_type: str = "job.queued"
job_id: UUID
job_type: str
queue: str
payload: Dict[str, Any] = {}
class JobStarted(ASFEvent):
event_type: str = "job.started"
job_id: UUID
worker: Optional[str] = None
payload: Dict[str, Any] = {}
class JobCompleted(ASFEvent):
event_type: str = "job.completed"
job_id: UUID
duration_ms: Optional[int] = None
payload: Dict[str, Any] = {}
class JobFailed(ASFEvent):
event_type: str = "job.failed"
job_id: UUID
error: str
payload: Dict[str, Any] = {}
class JobCancelled(ASFEvent):
event_type: str = "job.cancelled"
job_id: UUID
reason: Optional[str] = None
payload: Dict[str, Any] = {}