models.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from __future__ import absolute_import
  2. from datetime import datetime
  3. import sqlalchemy as sa
  4. from .. import states
  5. from .session import ResultModelBase
  6. # See docstring of a805d4bd for an explanation for this workaround ;)
  7. if sa.__version__.startswith('0.5'):
  8. from .dfd042c7 import PickleType
  9. else:
  10. from .a805d4bd import PickleType # noqa
  11. class Task(ResultModelBase):
  12. """Task result/status."""
  13. __tablename__ = "celery_taskmeta"
  14. __table_args__ = {"sqlite_autoincrement": True}
  15. id = sa.Column(sa.Integer, sa.Sequence("task_id_sequence"),
  16. primary_key=True,
  17. autoincrement=True)
  18. task_id = sa.Column(sa.String(255), unique=True)
  19. status = sa.Column(sa.String(50), default=states.PENDING)
  20. result = sa.Column(PickleType, nullable=True)
  21. date_done = sa.Column(sa.DateTime, default=datetime.now,
  22. onupdate=datetime.now, nullable=True)
  23. traceback = sa.Column(sa.Text, nullable=True)
  24. def __init__(self, task_id):
  25. self.task_id = task_id
  26. def to_dict(self):
  27. return {"task_id": self.task_id,
  28. "status": self.status,
  29. "result": self.result,
  30. "traceback": self.traceback,
  31. "date_done": self.date_done}
  32. def __repr__(self):
  33. return "<Task %s state: %s>" % (self.task_id, self.status)
  34. class TaskSet(ResultModelBase):
  35. """TaskSet result"""
  36. __tablename__ = "celery_tasksetmeta"
  37. __table_args__ = {"sqlite_autoincrement": True}
  38. id = sa.Column(sa.Integer, sa.Sequence("taskset_id_sequence"),
  39. autoincrement=True, primary_key=True)
  40. taskset_id = sa.Column(sa.String(255), unique=True)
  41. result = sa.Column(sa.PickleType, nullable=True)
  42. date_done = sa.Column(sa.DateTime, default=datetime.now,
  43. nullable=True)
  44. def __init__(self, taskset_id, result):
  45. self.taskset_id = taskset_id
  46. self.result = result
  47. def to_dict(self):
  48. return {"taskset_id": self.taskset_id,
  49. "result": self.result,
  50. "date_done": self.date_done}
  51. def __repr__(self):
  52. return u"<TaskSet: %s>" % (self.taskset_id, )