conf.py 8.7 KB

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