__init__.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. """celery.backends"""
  2. from functools import partial
  3. from celery.loaders import settings
  4. import sys
  5. DEFAULT_BACKEND = "database"
  6. DEFAULT_PERIODIC_STATUS_BACKEND = "database"
  7. CELERY_BACKEND = getattr(settings, "CELERY_BACKEND", DEFAULT_BACKEND)
  8. CELERY_PERIODIC_STATUS_BACKEND = getattr(settings,
  9. "CELERY_PERIODIC_STATUS_BACKEND",
  10. DEFAULT_PERIODIC_STATUS_BACKEND)
  11. def get_backend_cls(backend):
  12. """Get backend class by name.
  13. If the name does not include "``.``" (is not fully qualified),
  14. ``"celery.backends."`` will be prepended to the name. e.g.
  15. ``"database"`` becomes ``"celery.backends.database"``.
  16. """
  17. if backend.find(".") == -1:
  18. backend = "celery.backends.%s" % backend
  19. __import__(backend)
  20. backend_module = sys.modules[backend]
  21. return getattr(backend_module, "Backend")
  22. """
  23. .. function:: get_default_backend_cls()
  24. Get the backend class specified in :setting:`CELERY_BACKEND`.
  25. """
  26. get_default_backend_cls = partial(get_backend_cls, CELERY_BACKEND)
  27. """
  28. .. function:: get_default_periodicstatus_backend_cls()
  29. Get the backend class specified in
  30. :setting:`CELERY_PERIODIC_STATUS_BACKEND`.
  31. """
  32. get_default_periodicstatus_backend_cls = partial(get_backend_cls,
  33. CELERY_PERIODIC_STATUS_BACKEND)
  34. """
  35. .. class:: DefaultBackend
  36. The default backend class used for storing task results and status,
  37. specified in :setting:`CELERY_BACKEND`.
  38. """
  39. DefaultBackend = get_default_backend_cls()
  40. """
  41. .. class:: DefaultPeriodicStatusBackend
  42. The default backend for storing periodic task metadata, specified
  43. in :setting:`CELERY_PERIODIC_STATUS_BACKEND`.
  44. """
  45. DefaultPeriodicStatusBackend = get_default_periodicstatus_backend_cls()
  46. """
  47. .. data:: default_backend
  48. An instance of :class:`DefaultBackend`.
  49. """
  50. default_backend = DefaultBackend()
  51. """
  52. .. data:: default_periodic_status_backend
  53. An instance of :class:`DefaultPeriodicStatusBackend`.
  54. """
  55. default_periodic_status_backend = DefaultPeriodicStatusBackend()