Development of an internal social media platform with personalised dashboards for students
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.

models.py 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. # -*- coding: utf-8 -*-
  2. """
  3. celery.backends.database.models
  4. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5. Database tables for the SQLAlchemy result store backend.
  6. """
  7. from __future__ import absolute_import
  8. from datetime import datetime
  9. import sqlalchemy as sa
  10. from sqlalchemy.types import PickleType
  11. from celery import states
  12. from .session import ResultModelBase
  13. __all__ = ['Task', 'TaskSet']
  14. class Task(ResultModelBase):
  15. """Task result/status."""
  16. __tablename__ = 'celery_taskmeta'
  17. __table_args__ = {'sqlite_autoincrement': True}
  18. id = sa.Column(sa.Integer, sa.Sequence('task_id_sequence'),
  19. primary_key=True,
  20. autoincrement=True)
  21. task_id = sa.Column(sa.String(255), unique=True)
  22. status = sa.Column(sa.String(50), default=states.PENDING)
  23. result = sa.Column(PickleType, nullable=True)
  24. date_done = sa.Column(sa.DateTime, default=datetime.utcnow,
  25. onupdate=datetime.utcnow, nullable=True)
  26. traceback = sa.Column(sa.Text, nullable=True)
  27. def __init__(self, task_id):
  28. self.task_id = task_id
  29. def to_dict(self):
  30. return {'task_id': self.task_id,
  31. 'status': self.status,
  32. 'result': self.result,
  33. 'traceback': self.traceback,
  34. 'date_done': self.date_done}
  35. def __repr__(self):
  36. return '<Task {0.task_id} state: {0.status}>'.format(self)
  37. class TaskSet(ResultModelBase):
  38. """TaskSet result"""
  39. __tablename__ = 'celery_tasksetmeta'
  40. __table_args__ = {'sqlite_autoincrement': True}
  41. id = sa.Column(sa.Integer, sa.Sequence('taskset_id_sequence'),
  42. autoincrement=True, primary_key=True)
  43. taskset_id = sa.Column(sa.String(255), unique=True)
  44. result = sa.Column(PickleType, nullable=True)
  45. date_done = sa.Column(sa.DateTime, default=datetime.utcnow,
  46. nullable=True)
  47. def __init__(self, taskset_id, result):
  48. self.taskset_id = taskset_id
  49. self.result = result
  50. def to_dict(self):
  51. return {'taskset_id': self.taskset_id,
  52. 'result': self.result,
  53. 'date_done': self.date_done}
  54. def __repr__(self):
  55. return '<TaskSet: {0.taskset_id}>'.format(self)