Changelog 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. .. _changelog:
  2. ================
  3. Change history
  4. ================
  5. This document contains change notes for bugfix releases in the 3.1.x series
  6. (Cipater), please see :ref:`whatsnew-3.1` for an overview of what's
  7. new in Celery 3.1.
  8. .. _version-3.1.7:
  9. 3.1.7
  10. =====
  11. :release-date: 2013-12-17 X:XX P.M UTC
  12. .. _v317-important:
  13. Important Notes
  14. ---------------
  15. Init script security improvements
  16. ---------------------------------
  17. Where the generic init scripts (for ``celeryd``, and ``celerybeat``) before
  18. delegated the responsibility of dropping privileges to the target application,
  19. it will now use ``su`` instead, so that the Python program is not trusted
  20. with superuser privileges.
  21. This is not in reaction to any known exploit, but instead will
  22. limit the possibility of a privilege escalation bug being discovered in the
  23. future.
  24. You have to upgrade the init scripts manually from this directory:
  25. https://github.com/celery/celery/tree/3.1/extra/generic-init.d
  26. AMQP result backend
  27. ~~~~~~~~~~~~~~~~~~~
  28. The 3.1 release accidentally left the amqp backend configured to be
  29. non-persistent by default.
  30. Upgrading from 3.0 would give "not equivalent" errors when attempting to
  31. set or retrieve results for a task unless you manually set the
  32. persistence setting:
  33. CELERY_RESULT_PERSISTENT = True
  34. This version restores the previous setting so if you already forced
  35. this upgrade by removing the existing exchange you must either
  36. keep the configuration by setting ``CELERY_RESULT_PERSISTENT = False``
  37. or delete the ``celeryresults`` exchange again.
  38. .. _v317-fixes:
  39. Fixes
  40. -----
  41. - Now depends on :ref:`Kombu 3.0.8 <kombu:version-3.0.8>`.
  42. - Now depends on :mod:`billiard` 3.3.0.13
  43. - Events: Fixed compatability with non-standard json libraries
  44. that sends float as :class:`decimal.Decimal` (Issue #1731)
  45. - Events: State worker objects now always defines attributes:
  46. ``active``, ``processed``, ``loadavg``, ``sw_ident``, ``sw_ver``
  47. and ``sw_sys``.
  48. - Worker: Now keeps count of the total number of tasks processed,
  49. not just by type (``all_active_count``).
  50. - Init scripts: Fixed problem with reading configuration file
  51. when the init script is symlinked to a runlevel (e.g. ``S02celeryd``).
  52. (Issue #1740).
  53. This also removed a rarely used feature where you can symlink the script
  54. to provide alternative configurations. You instead copy the script
  55. and give it a new name, but perhaps a better solution is to provide
  56. arguments to ``CELERYD_OPTS`` to separate them:
  57. .. code-block:: bash
  58. CELERYD_NODES="X1 X2 Y1 Y2"
  59. CELERYD_OPTS="-A:X1 x -A:X2 x -A:Y1 y -A:Y2 y"
  60. - Fallback chord unlock task is now always called after the chord header
  61. (Issue #1700).
  62. This means that the unlock task will not be started if there's
  63. an error sending the header.
  64. - Celery command: Fixed problem with arguments for some control commands.
  65. Fix contributed by Konstantin Podshumok.
  66. - Fixed bug in ``utcoffset`` where the offset when in DST would be
  67. completely wrong (Issue #1743).
  68. - Worker with ``-B`` argument did not properly shut down the beat instance.
  69. - Worker: The ``%n`` and ``%h`` formats are now also supported by the
  70. :option:`--logfile`, :option:`--pidfile` and :option:`--statedb` arguments.
  71. Example:
  72. .. code-block:: bash
  73. $ celery -A proj worker -n foo@%h --logfile=%n.log --statedb=%n.db
  74. - Redis/Cache result backends: Will now timeout if keys evicted while trying
  75. to join a chord.
  76. - The fallbock unlock chord task now raises :exc:`Retry` so that the
  77. retry even is properly logged by the worker.
  78. - Multi: Will no longer apply Eventlet/gevent monkey patches (Issue #1717).
  79. - Redis result backend: Now supports UNIX sockets.
  80. Like the Redis broker transport the result backend now also supports
  81. using ``redis+socket:///tmp/redis.sock`` URLs.
  82. Contributed by Alcides Viamontes Esquivel.
  83. - Events: Events sent by clients was mistaken for worker related events
  84. (Issue #1714).
  85. For ``events.State`` the tasks now have a ``Task.client`` attribute
  86. that is set when a ``task-sent`` event is being received.
  87. Also, a clients logical clock is not in sync with the cluster so
  88. they live in a "time bubble". So for this reason monitors will no
  89. longer attempt to merge with the clock of an event sent by a client,
  90. instead it will fake the value by using the current clock with
  91. a skew of -1.
  92. - Prefork pool: The method used to find terminated process was flawed
  93. in that it did not also take into account a missing popen object.
  94. - Events: No longer takes clock value from ``task-sent`` events.
  95. .. _version-3.1.6:
  96. 3.1.6
  97. =====
  98. :release-date: 2013-12-02 6:00 P.M UTC
  99. :release-by: Ask Solem
  100. - Now depends on :mod:`billiard` 3.3.0.10.
  101. - Now depends on :ref:`Kombu 3.0.7 <kombu:version-3.0.7>`.
  102. - Fixed problem where Mingle caused the worker to hang at startup
  103. (Issue #1686).
  104. - Beat: Would attempt to drop privileges twice (Issue #1708).
  105. - Windows: Fixed error with ``geteuid`` not being available (Issue #1676).
  106. - Tasks can now provide a list of expected error classes (Issue #1682).
  107. The list should only include errors that the task is expected to raise
  108. during normal operation::
  109. @task(throws=(KeyError, HttpNotFound))
  110. What happens when an exceptions is raised depends on the type of error:
  111. - Expected errors (included in ``Task.throws``)
  112. Will be logged using severity ``INFO``, and traceback is excluded.
  113. - Unexpected errors
  114. Will be logged using severity ``ERROR``, with traceback included.
  115. - Cache result backend now compatible with Python 3 (Issue #1697).
  116. - CentOS init script: Now compatible with sys-v style init symlinks.
  117. Fix contributed by Jonathan Jordan.
  118. - Events: Fixed problem when task name is not defined (Issue #1710).
  119. Fix contributed by Mher Movsisyan.
  120. - Task: Fixed unbound local errors (Issue #1684).
  121. Fix contributed by Markus Ullmann.
  122. - Canvas: Now unrolls groups with only one task (optimization) (Issue #1656).
  123. - Task: Fixed problem with eta and timezones.
  124. Fix contributed by Alexander Koval.
  125. - Django: Worker now performs model validation (Issue #1681).
  126. - Task decorator now emits less confusing errors when used with
  127. incorrect arguments (Issue #1692).
  128. - Task: New method ``Task.send_event`` can be used to send custom events
  129. to Flower and other monitors.
  130. - Fixed a compatibility issue with non-abstract task classes
  131. - Events from clients now uses new node name format (``gen<pid>@<hostname>``).
  132. - Fixed rare bug with Callable not being defined at interpreter shutdown
  133. (Issue #1678).
  134. Fix contributed by Nick Johnson.
  135. - Fixed Python 2.6 compatibility (Issue #1679).
  136. .. _version-3.1.5:
  137. 3.1.5
  138. =====
  139. :release-date: 2013-11-21 6:20 P.M UTC
  140. :release-by: Ask Solem
  141. - Now depends on :ref:`Kombu 3.0.6 <kombu:version-3.0.6>`.
  142. - Now depends on :mod:`billiard` 3.3.0.8
  143. - App: ``config_from_object`` is now lazy (Issue #1665).
  144. - App: ``autodiscover_tasks`` is now lazy.
  145. Django users should now wrap access to the settings object
  146. in a lambda::
  147. app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
  148. this ensures that the settings object is not prepared
  149. prematurely.
  150. - Fixed regression for ``--app`` argument experienced by
  151. some users (Issue #1653).
  152. - Worker: Now respects the ``--uid`` and ``--gid`` arguments
  153. even if ``--detach`` is not enabled.
  154. - Beat: Now respects the ``--uid`` and ``--gid`` arguments
  155. even if ``--detach`` is not enabled.
  156. - Python 3: Fixed unorderable error occuring with the worker ``-B``
  157. argument enabled.
  158. - ``celery.VERSION`` is now a named tuple.
  159. - ``maybe_signature(list)`` is now applied recursively (Issue #1645).
  160. - ``celery shell`` command: Fixed ``IPython.frontend`` deprecation warning.
  161. - The default app no longer includes the builtin fixups.
  162. This fixes a bug where ``celery multi`` would attempt
  163. to load the Django settings module before entering
  164. the target working directory.
  165. - The Django daemonization tutorial was changed.
  166. Users no longer have to explicitly export ``DJANGO_SETTINGS_MODULE``
  167. in :file:`/etc/default/celeryd` when the new project layout is used.
  168. - Redis result backend: expiry value can now be 0 (Issue #1661).
  169. - Censoring settings now accounts for non-string keys (Issue #1663).
  170. - App: New ``autofinalize`` option.
  171. Apps are automatically finalized when the task registry is accessed.
  172. You can now disable this behavior so that an exception is raised
  173. instead.
  174. Example:
  175. .. code-block:: python
  176. app = Celery(autofinalize=False)
  177. # raises RuntimeError
  178. tasks = app.tasks
  179. @app.task
  180. def add(x, y):
  181. return x + y
  182. # raises RuntimeError
  183. add.delay(2, 2)
  184. app.finalize()
  185. # no longer raises:
  186. tasks = app.tasks
  187. add.delay(2, 2)
  188. - The worker did not send monitoring events during shutdown.
  189. - Worker: Mingle and gossip is now automatically disabled when
  190. used with an unsupported transport (Issue #1664).
  191. - ``celery`` command: Preload options now supports
  192. the rare ``--opt value`` format (Issue #1668).
  193. - ``celery`` command: Accidentally removed options
  194. appearing before the subcommand, these are now moved to the end
  195. instead.
  196. - Worker now properly responds to ``inspect stats`` commands
  197. even if received before startup is complete (Issue #1659).
  198. - :signal:`task_postrun` is now sent within a finally block, to make
  199. sure the signal is always sent.
  200. - Beat: Fixed syntax error in string formatting.
  201. Contributed by nadad.
  202. - Fixed typos in the documentation.
  203. Fixes contributed by Loic Bistuer, sunfinite.
  204. - Nested chains now works properly when constructed using the
  205. ``chain`` type instead of the ``|`` operator (Issue #1656).
  206. .. _version-3.1.4:
  207. 3.1.4
  208. =====
  209. :release-date: 2013-11-15 11:40 P.M UTC
  210. :release-by: Ask Solem
  211. - Now depends on :ref:`Kombu 3.0.5 <kombu:version-3.0.5>`.
  212. - Now depends on :mod:`billiard` 3.3.0.7
  213. - Worker accidentally set a default socket timeout of 5 seconds.
  214. - Django: Fixup now sets the default app so that threads will use
  215. the same app instance (e.g. for manage.py runserver).
  216. - Worker: Fixed Unicode error crash at startup experienced by some users.
  217. - Calling ``.apply_async`` on an empty chain now works again (Issue #1650).
  218. - The ``celery multi show`` command now generates the same arguments
  219. as the start command does.
  220. - The ``--app`` argument could end up using a module object instead
  221. of an app instance (with a resulting crash).
  222. - Fixed a syntax error problem in the celerybeat init script.
  223. Fix contributed by Vsevolod.
  224. - Tests now passing on PyPy 2.1 and 2.2.
  225. .. _version-3.1.3:
  226. 3.1.3
  227. =====
  228. :release-date: 2013-11-13 12:55 A.M UTC
  229. :release-by: Ask Solem
  230. - Fixed compatibility problem with Python 2.7.0 - 2.7.5 (Issue #1637)
  231. ``unpack_from`` started supporting ``memoryview`` arguments
  232. in Python 2.7.6.
  233. - Worker: :option:`-B` argument accidentally closed files used
  234. for logging.
  235. - Task decorated tasks now keep their docstring (Issue #1636)
  236. .. _version-3.1.2:
  237. 3.1.2
  238. =====
  239. :release-date: 2013-11-12 08:00 P.M UTC
  240. :release-by: Ask Solem
  241. - Now depends on :mod:`billiard` 3.3.0.6
  242. - No longer needs the billiard C extension to be installed.
  243. - The worker silently ignored task errors.
  244. - Django: Fixed ``ImproperlyConfigured`` error raised
  245. when no database backend specified.
  246. Fix contributed by j0hnsmith
  247. - Prefork pool: Now using ``_multiprocessing.read`` with ``memoryview``
  248. if available.
  249. - ``close_open_fds`` now uses ``os.closerange`` if available.
  250. - ``get_fdmax`` now takes value from ``sysconfig`` if possible.
  251. .. _version-3.1.1:
  252. 3.1.1
  253. =====
  254. :release-date: 2013-11-11 06:30 P.M UTC
  255. :release-by: Ask Solem
  256. - Now depends on :mod:`billiard` 3.3.0.4.
  257. - Python 3: Fixed compatibility issues.
  258. - Windows: Accidentally showed warning that the billiard C extension
  259. was not installed (Issue #1630).
  260. - Django: Tutorial updated with a solution that sets a default
  261. :envvar:`DJANGO_SETTINGS_MODULE` so that it doesn't have to be typed
  262. in with the :program:`celery` command.
  263. Also fixed typos in the tutorial, and added the settings
  264. required to use the Django database backend.
  265. Thanks to Chris Ward, orarbel.
  266. - Django: Fixed a problem when using the Django settings in Django 1.6.
  267. - Django: Fixup should not be applied if the django loader is active.
  268. - Worker: Fixed attribute error for ``human_write_stats`` when using the
  269. compatibility prefork pool implementation.
  270. - Worker: Fixed compatibility with billiard without C extension.
  271. - Inspect.conf: Now supports a ``with_defaults`` argument.
  272. - Group.restore: The backend argument was not respected.
  273. .. _version-3.1.0:
  274. 3.1.0
  275. =======
  276. :release-date: 2013-11-09 11:00 P.M UTC
  277. :release-by: Ask Solem
  278. See :ref:`whatsnew-3.1`.