task_record.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import time
  2. from dataclasses import dataclass, field
  3. from typing import Any, Optional
  4. @dataclass
  5. class TaskRecord:
  6. task_id: str = ""
  7. status: str = "submitted" # submitted | processing | successes | failed
  8. message: str = ""
  9. type: str = "workflow"
  10. data: Optional[dict[str, Any]] = None
  11. request: Optional[dict[str, Any]] = None
  12. create_time: int = field(default_factory=lambda: int(time.time() * 1000))
  13. update_time: int = field(default_factory=lambda: int(time.time() * 1000))
  14. def touch(self):
  15. self.update_time = int(time.time() * 1000)
  16. def to_dict(self) -> dict:
  17. return {
  18. "task_id": self.task_id,
  19. "status": self.status,
  20. "message": self.message,
  21. "type": self.type,
  22. "data": self.data,
  23. "request": self.request,
  24. "create_time": self.create_time,
  25. "update_time": self.update_time,
  26. }
  27. @classmethod
  28. def from_dict(cls, d: dict) -> "TaskRecord":
  29. return cls(
  30. task_id=d.get("task_id", ""),
  31. status=d.get("status", "submitted"),
  32. message=d.get("message", ""),
  33. type=d.get("type", "workflow"),
  34. data=d.get("data"),
  35. request=d.get("request"),
  36. create_time=d.get("create_time", int(time.time() * 1000)),
  37. update_time=d.get("update_time", int(time.time() * 1000)),
  38. )