Changelog 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. .. _changelog:
  2. ================
  3. Change history
  4. ================
  5. This document contains change notes for bugfix releases in
  6. the 4.0.x series (latentcall), please see :ref:`whatsnew-4.0` for
  7. an overview of what's new in Celery 4.0.
  8. .. _version-4.0.1:
  9. 4.0.1
  10. =====
  11. :release-date: 2016-12-08 05:22 PM PST
  12. :release-by: Ask Solem
  13. * [Security: `CELERYSA-0003`_] Insecure default configuration
  14. The default :setting:`accept_content` setting was set to allow
  15. deserialization of pickled messages in Celery 4.0.0.
  16. The insecure default has been fixed in 4.0.1, and you can also
  17. configure the 4.0.0 version to explicitly only allow json serialized
  18. messages:
  19. .. code-block:: python
  20. app.conf.accept_content = ['json']
  21. .. _`CELERYSA-0003`:
  22. https://github.com/celery/celery/tree/master/docs/sec/CELERYSA-0003.txt
  23. - **Tasks**: Added new method to register class-based tasks (Issue #3615).
  24. To register a class based task you should now call ``app.register_task``:
  25. .. code-block:: python
  26. from celery import Celery, Task
  27. app = Celery()
  28. class CustomTask(Task):
  29. def run(self):
  30. return 'hello'
  31. app.register_task(CustomTask())
  32. - **Tasks**: Argument checking now supports keyword-only arguments on Python3
  33. (Issue #3658).
  34. Contributed by :github_user:`sww`.
  35. - **Tasks**: The ``task-sent`` event was not being sent even if
  36. configured to do so (Issue #3646).
  37. - **Worker**: Fixed AMQP heartbeat support for eventlet/gevent pools
  38. (Issue #3649).
  39. - **App**: ``app.conf.humanize()`` would not work if configuration
  40. not finalized (Issue #3652).
  41. - **Utils**: ``saferepr`` attempted to show iterables as lists
  42. and mappings as dicts.
  43. - **Utils**: ``saferepr`` did not handle unicode-errors
  44. when attempting to format ``bytes`` on Python 3 (Issue #3610).
  45. - **Utils**: ``saferepr`` should now properly represent byte strings
  46. with non-ascii characters (Issue #3600).
  47. - **Results**: Fixed bug in elasticsearch where _index method missed
  48. the body argument (Issue #3606).
  49. Fix contributed by **何翔宇** (Sean Ho).
  50. - **Canvas**: Fixed :exc:`ValueError` in chord with single task header
  51. (Issue #3608).
  52. Fix contributed by **Viktor Holmqvist**.
  53. - **Task**: Ensure class-based task has name prior to registration
  54. (Issue #3616).
  55. Fix contributed by **Rick Wargo**.
  56. - **Beat**: Fixed problem with strings in shelve (Issue #3644).
  57. Fix contributed by **Alli**.
  58. - **Worker**: Fixed :exc:`KeyError` in ``inspect stats`` when ``-O`` argument
  59. set to something other than ``fast`` or ``fair`` (Issue #3621).
  60. - **Task**: Retried tasks were no longer sent to the original queue
  61. (Issue #3622).
  62. - **Worker**: Python 3: Fixed None/int type comparison in
  63. :file:`apps/worker.py` (Issue #3631).
  64. - **Results**: Redis has a new :setting:`redis_socket_connect_timeout`
  65. setting.
  66. - **Results**: Redis result backend passed the ``socket_connect_timeout``
  67. argument to UNIX socket based connections by mistake, causing a crash.
  68. - **Worker**: Fixed missing logo in worker splash screen when running on
  69. Python 3.x (Issue #3627).
  70. Fix contributed by **Brian Luan**.
  71. - **Deps**: Fixed ``celery[redis]`` bundle installation (Issue #3643).
  72. Fix contributed by **Rémi Marenco**.
  73. - **Deps**: Bundle ``celery[sqs]`` now also requires :pypi:`pycurl`
  74. (Issue #3619).
  75. - **Worker**: Hard time limits were no longer being respected (Issue #3618).
  76. - **Worker**: Soft time limit log showed ``Trues`` instead of the number
  77. of seconds.
  78. - **App**: ``registry_cls`` argument no longer had any effect (Issue #3613).
  79. - **Worker**: Event producer now uses ``connection_for_Write`` (Issue #3525).
  80. - **Results**: Redis/memcache backends now uses :setting:`result_expires`
  81. to expire chord counter (Issue #3573).
  82. Contributed by **Tayfun Sen**.
  83. - **Django**: Fixed command for upgrading settings with Django (Issue #3563).
  84. Fix contributed by **François Voron**.
  85. - **Testing**: Added a ``celery_parameters`` test fixture to be able to use
  86. customized ``Celery`` init parameters. (#3626)
  87. Contributed by **Steffen Allner**.
  88. - Documentation improvements contributed by
  89. - :github_user:`csfeathers`
  90. - **Moussa Taifi**
  91. - **Yuhannaa**
  92. - **Laurent Peuch**
  93. - **Christian**
  94. - **Bruno Alla**
  95. - **Steven Johns**
  96. - :github_user:`tnir`
  97. - **GDR!**
  98. .. _version-4.0.0:
  99. 4.0.0
  100. =====
  101. :release-date: 2016-11-04 02:00 P.M PDT
  102. :release-by: Ask Solem
  103. See :ref:`whatsnew-4.0` (in :file:`docs/whatsnew-4.0.rst`).
  104. .. _version-4.0.0rc7:
  105. 4.0.0rc7
  106. ========
  107. :release-date: 2016-11-02 01:30 P.M PDT
  108. Important notes
  109. ---------------
  110. - Database result backend related setting names changed from
  111. ``sqlalchemy_*`` -> ``database_*``.
  112. The ``sqlalchemy_`` named settings won't work at all in this
  113. version so you need to rename them. This is a last minute change,
  114. and as they were not supported in 3.1 we will not be providing
  115. aliases.
  116. - ``chain(A, B, C)`` now works the same way as ``A | B | C``.
  117. This means calling ``chain()`` might not actually return a chain,
  118. it can return a group or any other type depending on how the
  119. workflow can be optimized.