|
@@ -104,8 +104,8 @@ and also drops support for Python 3.3 so supported versions are:
|
|
- CPython 2.7
|
|
- CPython 2.7
|
|
- CPython 3.4
|
|
- CPython 3.4
|
|
- CPython 3.5
|
|
- CPython 3.5
|
|
-- PyPy 5.3 (``pypy2``)
|
|
|
|
-- PyPy 2.4 (``pypy3``)
|
|
|
|
|
|
+- PyPy 5.4 (``pypy2``)
|
|
|
|
+- PyPy 5.5-alpha (``pypy3``)
|
|
|
|
|
|
Last major version to support Python 2
|
|
Last major version to support Python 2
|
|
--------------------------------------
|
|
--------------------------------------
|
|
@@ -134,6 +134,10 @@ Removed features
|
|
|
|
|
|
- Microsoft Windows is no longer supported.
|
|
- Microsoft Windows is no longer supported.
|
|
|
|
|
|
|
|
+ The test suite is passing, and Celery seems to be working with Windows,
|
|
|
|
+ but we make no guarantees as we are unable to diagnose issues on this
|
|
|
|
+ platform.
|
|
|
|
+
|
|
- Jython is no longer supported.
|
|
- Jython is no longer supported.
|
|
|
|
|
|
Features removed for simplicity
|
|
Features removed for simplicity
|
|
@@ -161,6 +165,9 @@ Features removed for simplicity
|
|
This was an experimental feature, so not covered by our deprecation
|
|
This was an experimental feature, so not covered by our deprecation
|
|
timeline guarantee.
|
|
timeline guarantee.
|
|
|
|
|
|
|
|
+ You can copy and pase the existing batches code for use within your projects:
|
|
|
|
+ https://github.com/celery/celery/blob/3.1/celery/contrib/batches.py
|
|
|
|
+
|
|
Features removed for lack of funding
|
|
Features removed for lack of funding
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
@@ -171,8 +178,6 @@ support for the transports, citing a lack of resources.
|
|
As this subtle hint for the need of funding failed
|
|
As this subtle hint for the need of funding failed
|
|
we've removed them completely, breaking backwards compatibility.
|
|
we've removed them completely, breaking backwards compatibility.
|
|
|
|
|
|
-- Using MongoDB as a broker is no longer supported.
|
|
|
|
-
|
|
|
|
- Using the Django ORM as a broker is no longer supported.
|
|
- Using the Django ORM as a broker is no longer supported.
|
|
|
|
|
|
- Using SQLAlchemy as a broker is no longer supported.
|
|
- Using SQLAlchemy as a broker is no longer supported.
|
|
@@ -193,14 +198,6 @@ attempting to use them will raise an exception:
|
|
will crash at startup when present. Luckily this
|
|
will crash at startup when present. Luckily this
|
|
flag isn't used in production systems.
|
|
flag isn't used in production systems.
|
|
|
|
|
|
-- The ``--autoscale`` feature has been removed.
|
|
|
|
-
|
|
|
|
- This flag is only used by companies to save money, but had
|
|
|
|
- bugs either nobody cared to work on, or sponsor a few hours of work to get it fixed.
|
|
|
|
-
|
|
|
|
- The flag has been removed completely, so you must remove this command-line
|
|
|
|
- argument or your workers will crash.
|
|
|
|
-
|
|
|
|
- The experimental ``threads`` pool is no longer supported and has been removed.
|
|
- The experimental ``threads`` pool is no longer supported and has been removed.
|
|
|
|
|
|
- The force_execv feature is no longer supported.
|
|
- The force_execv feature is no longer supported.
|
|
@@ -217,7 +214,6 @@ attempting to use them will raise an exception:
|
|
Please use the ``rpc`` result backend for RPC-style calls, and a
|
|
Please use the ``rpc`` result backend for RPC-style calls, and a
|
|
persistent result backend for multi-consumer results.
|
|
persistent result backend for multi-consumer results.
|
|
|
|
|
|
-
|
|
|
|
**Now to the good news**...
|
|
**Now to the good news**...
|
|
|
|
|
|
New Task Message Protocol
|
|
New Task Message Protocol
|
|
@@ -352,7 +348,7 @@ a few special ones:
|
|
|
|
|
|
You can see a full table of the changes in :ref:`conf-old-settings-map`.
|
|
You can see a full table of the changes in :ref:`conf-old-settings-map`.
|
|
|
|
|
|
-JSON is now the default serializer
|
|
|
|
|
|
+Json is now the default serializer
|
|
----------------------------------
|
|
----------------------------------
|
|
|
|
|
|
The time has finally come to end the reign of :mod:`pickle` as the default
|
|
The time has finally come to end the reign of :mod:`pickle` as the default
|
|
@@ -371,6 +367,41 @@ then you have to configure your app before upgrading to 4.0:
|
|
result_serializer = 'pickle'
|
|
result_serializer = 'pickle'
|
|
accept_content = {'pickle'}
|
|
accept_content = {'pickle'}
|
|
|
|
|
|
|
|
+
|
|
|
|
+The Json serializer now also supports some additional types:
|
|
|
|
+
|
|
|
|
+- :class:`~datetime.datetime`, :class:`~datetime.time`, :class:`~datetime.date`
|
|
|
|
+
|
|
|
|
+ Converted to json text, in ISO-8601 format.
|
|
|
|
+
|
|
|
|
+- :class:`~decimal.Decimal`
|
|
|
|
+
|
|
|
|
+ Converted to json text.
|
|
|
|
+
|
|
|
|
+- :class:`django.utils.functional.Promise`
|
|
|
|
+
|
|
|
|
+ Django only: Lazy strings used for translation etc., are evaluated
|
|
|
|
+ and conversion to a json type is attempted.
|
|
|
|
+
|
|
|
|
+- :class:`uuid.UUID`
|
|
|
|
+
|
|
|
|
+ Converted to json text.
|
|
|
|
+
|
|
|
|
+You can also define a ``__json__`` method on your custom classes to support
|
|
|
|
+JSON serialization (must return a json compatible type):
|
|
|
|
+
|
|
|
|
+ class Person:
|
|
|
|
+ first_name = None
|
|
|
|
+ last_name = None
|
|
|
|
+ address = None
|
|
|
|
+
|
|
|
|
+ def __json__(self):
|
|
|
|
+ return {
|
|
|
|
+ 'first_name': self.first_name,
|
|
|
|
+ 'last_name': self.last_name,
|
|
|
|
+ 'address': self.address,
|
|
|
|
+ }
|
|
|
|
+
|
|
The Task base class no longer automatically register tasks
|
|
The Task base class no longer automatically register tasks
|
|
----------------------------------------------------------
|
|
----------------------------------------------------------
|
|
|
|
|
|
@@ -398,7 +429,7 @@ general behavior, and then using the task decorator to realize the task:
|
|
def custom(self):
|
|
def custom(self):
|
|
print('running')
|
|
print('running')
|
|
|
|
|
|
-This change also means the ``abstract`` attribute of the task
|
|
|
|
|
|
+This change also means that the ``abstract`` attribute of the task
|
|
no longer has any effect.
|
|
no longer has any effect.
|
|
|
|
|
|
Task argument checking
|
|
Task argument checking
|
|
@@ -425,6 +456,15 @@ even asynchronously:
|
|
check_arguments(*(args or ()), **(kwargs or {}))
|
|
check_arguments(*(args or ()), **(kwargs or {}))
|
|
TypeError: add() takes exactly 2 arguments (1 given)
|
|
TypeError: add() takes exactly 2 arguments (1 given)
|
|
|
|
|
|
|
|
+You can disable the argument checking for any task by setting its
|
|
|
|
+:attr:`~@Task.typing` attribute to :const:`False`:
|
|
|
|
+
|
|
|
|
+.. code-block:: pycon
|
|
|
|
+
|
|
|
|
+ >>> @app.task(typing=False)
|
|
|
|
+ ... def add(x, y):
|
|
|
|
+ ... return x + y
|
|
|
|
+
|
|
Redis Events not backward compatible
|
|
Redis Events not backward compatible
|
|
------------------------------------
|
|
------------------------------------
|
|
|
|
|
|
@@ -495,7 +535,7 @@ Installing Celery will no longer install the ``celeryd``,
|
|
``celerybeat`` and ``celeryd-multi`` programs.
|
|
``celerybeat`` and ``celeryd-multi`` programs.
|
|
|
|
|
|
This was announced with the release of Celery 3.1, but you may still
|
|
This was announced with the release of Celery 3.1, but you may still
|
|
-have scripts pointing to the old names so make sure you update these
|
|
|
|
|
|
+have scripts pointing to the old names, so make sure you update these
|
|
to use the new umbrella command:
|
|
to use the new umbrella command:
|
|
|
|
|
|
+-------------------+--------------+-------------------------------------+
|
|
+-------------------+--------------+-------------------------------------+
|
|
@@ -723,6 +763,8 @@ to fix some long outstanding issues.
|
|
- Fixed issue where ``group | task`` wasn't upgrading correctly
|
|
- Fixed issue where ``group | task`` wasn't upgrading correctly
|
|
to chord (Issue #2922).
|
|
to chord (Issue #2922).
|
|
|
|
|
|
|
|
+- Chords now properly sets ``result.parent`` links.
|
|
|
|
+
|
|
Amazon SQS transport now officially supported
|
|
Amazon SQS transport now officially supported
|
|
---------------------------------------------
|
|
---------------------------------------------
|
|
|
|
|
|
@@ -828,22 +870,25 @@ to be considered stable and enabled by default.
|
|
The new implementation greatly reduces the overhead of chords,
|
|
The new implementation greatly reduces the overhead of chords,
|
|
and especially with larger chords the performance benefit can be massive.
|
|
and especially with larger chords the performance benefit can be massive.
|
|
|
|
|
|
-New Riak result backend Introduced
|
|
|
|
-----------------------------------
|
|
|
|
|
|
+New Result backends
|
|
|
|
+-------------------
|
|
|
|
+
|
|
|
|
+New Riak result backend introduced
|
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
See :ref:`conf-riak-result-backend` for more information.
|
|
See :ref:`conf-riak-result-backend` for more information.
|
|
|
|
|
|
Contributed by **Gilles Dartiguelongue**, **Alman One** and **NoKriK**.
|
|
Contributed by **Gilles Dartiguelongue**, **Alman One** and **NoKriK**.
|
|
|
|
|
|
New CouchDB result backend introduced
|
|
New CouchDB result backend introduced
|
|
--------------------------------------
|
|
|
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
See :ref:`conf-couchdb-result-backend` for more information.
|
|
See :ref:`conf-couchdb-result-backend` for more information.
|
|
|
|
|
|
Contributed by **Nathan Van Gheem**.
|
|
Contributed by **Nathan Van Gheem**.
|
|
|
|
|
|
New Consul result backend introduced
|
|
New Consul result backend introduced
|
|
-------------------------------------
|
|
|
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
Add support for Consul as a backend using the Key/Value store of Consul.
|
|
Add support for Consul as a backend using the Key/Value store of Consul.
|
|
|
|
|
|
@@ -872,7 +917,7 @@ That installs the required package to talk to Consul's HTTP API from Python.
|
|
Contributed by **Wido den Hollander**.
|
|
Contributed by **Wido den Hollander**.
|
|
|
|
|
|
Brand new Cassandra result backend
|
|
Brand new Cassandra result backend
|
|
-----------------------------------
|
|
|
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
A brand new Cassandra backend utilizing the new :pypi:`cassandra-driver`
|
|
A brand new Cassandra backend utilizing the new :pypi:`cassandra-driver`
|
|
library is replacing the old result backend using the older
|
|
library is replacing the old result backend using the older
|
|
@@ -883,14 +928,14 @@ See :ref:`conf-cassandra-result-backend` for more information.
|
|
.. # XXX What changed?
|
|
.. # XXX What changed?
|
|
|
|
|
|
New Elasticsearch result backend introduced
|
|
New Elasticsearch result backend introduced
|
|
--------------------------------------------
|
|
|
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
See :ref:`conf-elasticsearch-result-backend` for more information.
|
|
See :ref:`conf-elasticsearch-result-backend` for more information.
|
|
|
|
|
|
Contributed by **Ahmet Demir**.
|
|
Contributed by **Ahmet Demir**.
|
|
|
|
|
|
New File-system result backend introduced
|
|
New File-system result backend introduced
|
|
------------------------------------------
|
|
|
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
See :ref:`conf-filesystem-result-backend` for more information.
|
|
See :ref:`conf-filesystem-result-backend` for more information.
|
|
|
|
|