You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

task.py 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from datetime import datetime
  2. from typing import Optional
  3. from celery import states # type: ignore
  4. from sqlalchemy.orm import Mapped, mapped_column
  5. from libs.datetime_utils import naive_utc_now
  6. from models.base import Base
  7. from .engine import db
  8. class CeleryTask(Base):
  9. """Task result/status."""
  10. __tablename__ = "celery_taskmeta"
  11. id = mapped_column(db.Integer, db.Sequence("task_id_sequence"), primary_key=True, autoincrement=True)
  12. task_id = mapped_column(db.String(155), unique=True)
  13. status = mapped_column(db.String(50), default=states.PENDING)
  14. result = mapped_column(db.PickleType, nullable=True)
  15. date_done = mapped_column(
  16. db.DateTime,
  17. default=lambda: naive_utc_now(),
  18. onupdate=lambda: naive_utc_now(),
  19. nullable=True,
  20. )
  21. traceback = mapped_column(db.Text, nullable=True)
  22. name = mapped_column(db.String(155), nullable=True)
  23. args = mapped_column(db.LargeBinary, nullable=True)
  24. kwargs = mapped_column(db.LargeBinary, nullable=True)
  25. worker = mapped_column(db.String(155), nullable=True)
  26. retries = mapped_column(db.Integer, nullable=True)
  27. queue = mapped_column(db.String(155), nullable=True)
  28. class CeleryTaskSet(Base):
  29. """TaskSet result."""
  30. __tablename__ = "celery_tasksetmeta"
  31. id: Mapped[int] = mapped_column(
  32. db.Integer, db.Sequence("taskset_id_sequence"), autoincrement=True, primary_key=True
  33. )
  34. taskset_id = mapped_column(db.String(155), unique=True)
  35. result = mapped_column(db.PickleType, nullable=True)
  36. date_done: Mapped[Optional[datetime]] = mapped_column(db.DateTime, default=lambda: naive_utc_now(), nullable=True)