models.py 2.2 KB

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