conf.py 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. import logging
  2. from datetime import timedelta
  3. from celery.registry import tasks
  4. from celery.loaders import settings
  5. DEFAULT_AMQP_EXCHANGE = "celery"
  6. DEFAULT_AMQP_PUBLISHER_ROUTING_KEY = "celery"
  7. DEFAULT_AMQP_CONSUMER_ROUTING_KEY = "celery"
  8. DEFAULT_AMQP_CONSUMER_QUEUE = "celery"
  9. DEFAULT_AMQP_EXCHANGE_TYPE = "direct"
  10. DEFAULT_DAEMON_CONCURRENCY = 0 # defaults to cpu count
  11. DEFAULT_DAEMON_PID_FILE = "celeryd.pid"
  12. DEFAULT_LOG_FMT = '[%(asctime)s: %(levelname)s/%(processName)s] %(message)s'
  13. DEFAULT_DAEMON_LOG_LEVEL = "WARN"
  14. DEFAULT_DAEMON_LOG_FILE = "celeryd.log"
  15. DEFAULT_AMQP_CONNECTION_TIMEOUT = 4
  16. DEFAULT_STATISTICS = False
  17. DEFAULT_ALWAYS_EAGER = False
  18. DEFAULT_TASK_RESULT_EXPIRES = timedelta(days=5)
  19. DEFAULT_AMQP_CONNECTION_RETRY = True
  20. DEFAULT_AMQP_CONNECTION_MAX_RETRIES = 100
  21. DEFAULT_TASK_SERIALIZER = "pickle"
  22. DEFAULT_BACKEND = "database"
  23. DEFAULT_DISABLE_RATE_LIMITS = False
  24. DEFAULT_CELERYBEAT_PID_FILE = "celerybeat.pid"
  25. DEFAULT_CELERYBEAT_LOG_LEVEL = "INFO"
  26. DEFAULT_CELERYBEAT_LOG_FILE = "celerybeat.log"
  27. DEFAULT_CELERYBEAT_SCHEDULE_FILENAME = "celerybeat-schedule"
  28. """
  29. .. data:: LOG_LEVELS
  30. Mapping of log level names to :mod:`logging` module constants.
  31. """
  32. LOG_LEVELS = {
  33. "DEBUG": logging.DEBUG,
  34. "INFO": logging.INFO,
  35. "WARNING": logging.WARNING,
  36. "WARN": logging.WARNING,
  37. "ERROR": logging.ERROR,
  38. "CRITICAL": logging.CRITICAL,
  39. "FATAL": logging.FATAL,
  40. }
  41. """
  42. .. data:: LOG_FORMAT
  43. The format to use for log messages.
  44. """
  45. LOG_FORMAT = getattr(settings, "CELERYD_DAEMON_LOG_FORMAT",
  46. DEFAULT_LOG_FMT)
  47. """
  48. .. data:: DAEMON_LOG_FILE
  49. Filename of the daemon log file.
  50. """
  51. DAEMON_LOG_FILE = getattr(settings, "CELERYD_LOG_FILE",
  52. DEFAULT_DAEMON_LOG_FILE)
  53. """
  54. .. data:: DAEMON_LOG_LEVEL
  55. """
  56. DAEMON_LOG_LEVEL = LOG_LEVELS[getattr(settings, "CELERYD_DAEMON_LOG_LEVEL",
  57. DEFAULT_DAEMON_LOG_LEVEL).upper()]
  58. """
  59. .. data:: DAEMON_PID_FILE
  60. Full path to the daemon pidfile.
  61. """
  62. DAEMON_PID_FILE = getattr(settings, "CELERYD_PID_FILE",
  63. DEFAULT_DAEMON_PID_FILE)
  64. """
  65. .. data:: DAEMON_CONCURRENCY
  66. The number of concurrent worker processes.
  67. """
  68. DAEMON_CONCURRENCY = getattr(settings, "CELERYD_CONCURRENCY",
  69. DEFAULT_DAEMON_CONCURRENCY)
  70. """
  71. .. data:: AMQP_EXCHANGE
  72. Name of the AMQP exchange.
  73. """
  74. AMQP_EXCHANGE = getattr(settings, "CELERY_AMQP_EXCHANGE",
  75. DEFAULT_AMQP_EXCHANGE)
  76. """
  77. .. data:: AMQP_EXCHANGE_TYPE
  78. The exchange type.
  79. """
  80. AMQP_EXCHANGE_TYPE = getattr(settings, "CELERY_AMQP_EXCHANGE_TYPE",
  81. DEFAULT_AMQP_EXCHANGE_TYPE)
  82. """
  83. .. data:: AMQP_PUBLISHER_ROUTING_KEY
  84. The default AMQP routing key used when publishing tasks.
  85. """
  86. AMQP_PUBLISHER_ROUTING_KEY = getattr(settings,
  87. "CELERY_AMQP_PUBLISHER_ROUTING_KEY",
  88. DEFAULT_AMQP_PUBLISHER_ROUTING_KEY)
  89. """
  90. .. data:: AMQP_CONSUMER_ROUTING_KEY
  91. The AMQP routing key used when consuming tasks.
  92. """
  93. AMQP_CONSUMER_ROUTING_KEY = getattr(settings,
  94. "CELERY_AMQP_CONSUMER_ROUTING_KEY",
  95. DEFAULT_AMQP_CONSUMER_ROUTING_KEY)
  96. """
  97. .. data:: AMQP_CONSUMER_QUEUE
  98. The name of the AMQP queue.
  99. """
  100. AMQP_CONSUMER_QUEUE = getattr(settings, "CELERY_AMQP_CONSUMER_QUEUE",
  101. DEFAULT_AMQP_CONSUMER_QUEUE)
  102. """
  103. .. data:: AMQP_CONSUMER_QUEUES
  104. Dictionary defining multiple AMQP queues.
  105. """
  106. DEFAULT_AMQP_CONSUMER_QUEUES = {
  107. AMQP_CONSUMER_QUEUE: {
  108. "exchange": AMQP_EXCHANGE,
  109. "routing_key": AMQP_CONSUMER_ROUTING_KEY,
  110. "exchange_type": AMQP_EXCHANGE_TYPE,
  111. }
  112. }
  113. AMQP_CONSUMER_QUEUES = getattr(settings, "CELERY_AMQP_CONSUMER_QUEUES",
  114. DEFAULT_AMQP_CONSUMER_QUEUES)
  115. """
  116. .. data:: AMQP_CONNECTION_TIMEOUT
  117. The timeout in seconds before we give up establishing a connection
  118. to the AMQP server.
  119. """
  120. AMQP_CONNECTION_TIMEOUT = getattr(settings, "CELERY_AMQP_CONNECTION_TIMEOUT",
  121. DEFAULT_AMQP_CONNECTION_TIMEOUT)
  122. """
  123. .. data:: SEND_CELERY_TASK_ERROR_EMAILS
  124. If set to ``True``, errors in tasks will be sent to admins by e-mail.
  125. If unset, it will send the e-mails if ``settings.DEBUG`` is False.
  126. """
  127. SEND_CELERY_TASK_ERROR_EMAILS = getattr(settings,
  128. "SEND_CELERY_TASK_ERROR_EMAILS",
  129. not settings.DEBUG)
  130. """
  131. .. data:: ALWAYS_EAGER
  132. Always execute tasks locally, don't send to the queue.
  133. """
  134. ALWAYS_EAGER = getattr(settings, "CELERY_ALWAYS_EAGER",
  135. DEFAULT_ALWAYS_EAGER)
  136. """
  137. .. data: TASK_RESULT_EXPIRES
  138. Task tombstone expire time in seconds.
  139. """
  140. TASK_RESULT_EXPIRES = getattr(settings, "CELERY_TASK_RESULT_EXPIRES",
  141. DEFAULT_TASK_RESULT_EXPIRES)
  142. # Make sure TASK_RESULT_EXPIRES is a timedelta.
  143. if isinstance(TASK_RESULT_EXPIRES, int):
  144. TASK_RESULT_EXPIRES = timedelta(seconds=TASK_RESULT_EXPIRES)
  145. """
  146. .. data:: AMQP_CONNECTION_RETRY
  147. Automatically try to re-establish the connection to the AMQP broker if
  148. it's lost.
  149. """
  150. AMQP_CONNECTION_RETRY = getattr(settings, "CELERY_AMQP_CONNECTION_RETRY",
  151. DEFAULT_AMQP_CONNECTION_RETRY)
  152. """
  153. .. data:: AMQP_CONNECTION_MAX_RETRIES
  154. Maximum number of retries before we give up re-establishing a connection
  155. to the AMQP broker.
  156. If this is set to ``0`` or ``None``, we will retry forever.
  157. Default is ``100`` retries.
  158. """
  159. AMQP_CONNECTION_MAX_RETRIES = getattr(settings,
  160. "CELERY_AMQP_CONNECTION_MAX_RETRIES",
  161. DEFAULT_AMQP_CONNECTION_MAX_RETRIES)
  162. """
  163. .. data:: TASK_SERIALIZER
  164. A string identifying the default serialization
  165. method to use. Can be ``pickle`` (default),
  166. ``json``, ``yaml``, or any custom serialization methods that have
  167. been registered with :mod:`carrot.serialization.registry`.
  168. Default is ``pickle``.
  169. """
  170. TASK_SERIALIZER = getattr(settings, "CELERY_TASK_SERIALIZER",
  171. DEFAULT_TASK_SERIALIZER)
  172. """
  173. .. data:: CELERY_BACKEND
  174. The backend used to store task results (tombstones).
  175. """
  176. CELERY_BACKEND = getattr(settings, "CELERY_BACKEND", DEFAULT_BACKEND)
  177. """
  178. .. data:: CELERY_CACHE_BACKEND
  179. Use a custom cache backend for celery. If not set the django-global
  180. cache backend in ``CACHE_BACKEND`` will be used.
  181. """
  182. CELERY_CACHE_BACKEND = getattr(settings, "CELERY_CACHE_BACKEND", None)
  183. """
  184. .. data:: CELERYBEAT_PID_FILE
  185. Name of celerybeats pid file.
  186. Default is: ``celerybeat.pid``.
  187. """
  188. CELERYBEAT_PID_FILE = getattr(settings, "CELERYBEAT_PID_FILE",
  189. DEFAULT_CELERYBEAT_PID_FILE)
  190. """
  191. .. data:: DEFAULT_RATE_LIMIT
  192. The default rate limit applied to all tasks which doesn't have a custom
  193. rate limit defined. (Default: None)
  194. """
  195. DEFAULT_RATE_LIMIT = getattr(settings, "CELERY_DEFAULT_RATE_LIMIT", None)
  196. """
  197. .. data:: DISABLE_RATE_LIMITS
  198. If ``True`` all rate limits will be disabled and all tasks will be executed
  199. as soon as possible.
  200. """
  201. DISABLE_RATE_LIMITS = getattr(settings, "CELERY_DISABLE_RATE_LIMITS",
  202. DEFAULT_DISABLE_RATE_LIMITS)
  203. """
  204. .. data:: CELERYBEAT_LOG_LEVEL
  205. Default log level for celerybeat.
  206. Default is: ``INFO``.
  207. """
  208. CELERYBEAT_LOG_LEVEL = getattr(settings, "CELERYBEAT_LOG_LEVEL",
  209. DEFAULT_CELERYBEAT_LOG_LEVEL)
  210. """
  211. .. data:: CELERYBEAT_LOG_FILE
  212. Default log file for celerybeat.
  213. Default is: ``celerybeat.log``.
  214. """
  215. CELERYBEAT_LOG_FILE = getattr(settings, "CELERYBEAT_LOG_FILE",
  216. DEFAULT_CELERYBEAT_LOG_FILE)
  217. """
  218. .. data:: CELERYBEAT_SCHEDULE_FILENAME
  219. Name of the persistent schedule database file.
  220. Default is: ``celerybeat-schedule``.
  221. """
  222. CELERYBEAT_SCHEDULE_FILENAME = getattr(settings,
  223. "CELERYBEAT_SCHEDULE_FILENAME",
  224. DEFAULT_CELERYBEAT_SCHEDULE_FILENAME)