45 lines
907 B
Python
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] = {}
|