whatsnew-4.0.rst 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. .. _whatsnew-4.0:
  2. ===========================================
  3. What's new in Celery 4.0 (TBA)
  4. ===========================================
  5. :Author: Ask Solem (ask at celeryproject.org)
  6. .. sidebar:: Change history
  7. What's new documents describe the changes in major versions,
  8. we also have a :ref:`changelog` that lists the changes in bugfix
  9. releases (0.0.x), while older series are archived under the :ref:`history`
  10. section.
  11. Celery is a simple, flexible and reliable distributed system to
  12. process vast amounts of messages, while providing operations with
  13. the tools required to maintain such a system.
  14. It's a task queue with focus on real-time processing, while also
  15. supporting task scheduling.
  16. Celery has a large and diverse community of users and contributors,
  17. you should come join us :ref:`on IRC <irc-channel>`
  18. or :ref:`our mailing-list <mailing-list>`.
  19. To read more about Celery you should go read the :ref:`introduction <intro>`.
  20. While this version is backward compatible with previous versions
  21. it's important that you read the following section.
  22. This version is officially supported on CPython 2.7, 3.4 and 3.5.
  23. and also supported on PyPy.
  24. .. _`website`: http://celeryproject.org/
  25. .. topic:: Table of Contents
  26. Make sure you read the important notes before upgrading to this version.
  27. .. contents::
  28. :local:
  29. :depth: 2
  30. Preface
  31. =======
  32. .. _v320-important:
  33. Important Notes
  34. ===============
  35. Dropped support for Python 2.6
  36. ------------------------------
  37. Celery now requires Python 2.7 or later.
  38. JSON is now the default serializer
  39. ----------------------------------
  40. Using one logfile per process by default
  41. ----------------------------------------
  42. The Task base class no longer automatically register tasks
  43. ----------------------------------------------------------
  44. The metaclass has been removed blah blah
  45. Arguments now verified when calling a task
  46. ------------------------------------------
  47. .. _v320-news:
  48. News
  49. ====
  50. New Task Message Protocol
  51. =========================
  52. ``TaskProducer`` replaced by ``app.amqp.create_task_message`` and
  53. ``app.amqp.send_task_message``.
  54. - Worker stores results for internal errors like ``ContentDisallowed``, and
  55. exceptions occurring outside of the task function.
  56. Canvas Refactor
  57. ===============
  58. Riak Result Backend
  59. ===================
  60. Contributed by Gilles Dartiguelongue, Alman One and NoKriK.
  61. Bla bla
  62. - blah blah
  63. New Cassandra Backend
  64. =====================
  65. New Cassandra backend will be called new_cassandra and utilize python-driver.
  66. Old backend is now deprecated.
  67. Event Batching
  68. ==============
  69. Events are now buffered in the worker and sent as a list
  70. Task.replace
  71. ============
  72. Task.replace changed, removes Task.replace_in_chord.
  73. The two methods had almost the same functionality, but the old Task.replace
  74. would force the new task to inherit the callbacks/errbacks of the existing
  75. task.
  76. If you replace a node in a tree, then you would not expect the new node to
  77. inherit the children of the old node, so this seems like unexpected
  78. behavior.
  79. So self.replace(sig) now works for any task, in addition sig can now
  80. be a group.
  81. Groups are automatically converted to a chord, where the callback
  82. will "accumulate" the results of the group tasks.
  83. A new builtin task (`celery.accumulate` was added for this purpose)
  84. Closes #817
  85. Optimized Beat implementation
  86. =============================
  87. In Other News
  88. -------------
  89. - **Requirements**:
  90. - Now depends on :ref:`Kombu 3.1 <kombu:version-3.1.0>`.
  91. - Now depends on :mod:`billiard` version 3.4.
  92. - No longer depends on ``anyjson`` :sadface:
  93. - **Programs**: ``%n`` format for :program:`celery multi` is now synonym with
  94. ``%N`` to be consistent with :program:`celery worker`.
  95. - **Programs**: celery inspect/control now supports --json argument
  96. - **Programs**: :program:`celery logtool`: Utility for filtering and parsing celery worker logfiles
  97. - **Worker**: Gossip now sets ``x-message-ttl`` for event queue to heartbeat_interval s.
  98. (Iss ue #2005).
  99. - **App**: New signals
  100. - :data:`app.on_configure <@on_configure>`
  101. - :data:`app.on_after_configure <@on_after_configure>`
  102. - :data:`app.on_after_finalize <@on_after_finalize>`
  103. - **Canvas**: ``chunks``/``map``/``starmap`` are now routed based on the target task.
  104. - Apps can now define how tasks are named (:meth:`@gen_task_name`).
  105. Contributed by Dmitry Malinovsky
  106. - Module ``celery.worker.job`` renamed to :mod:`celery.worker.request`.
  107. - Beat: ``Scheduler.Publisher``/``.publisher`` renamed to
  108. ``.Producer``/``.producer``.
  109. .. _v320-removals:
  110. Scheduled Removals
  111. ==================
  112. - The module ``celery.task.trace`` has been removed as scheduled for this
  113. version.
  114. - Magic keyword arguments no longer supported.
  115. .. _v320-deprecations:
  116. Deprecations
  117. ============
  118. See the :ref:`deprecation-timeline`.
  119. .. _v320-fixes:
  120. Fixes
  121. =====
  122. .. _v320-internal:
  123. Internal changes
  124. ================
  125. - Module ``celery.worker.job`` has been renamed to :mod:`celery.worker.request`.