|
@@ -859,7 +859,7 @@ Amazon SQS transport now officially supported
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
The SQS broker transport has been rewritten to use async I/O and as such
|
|
|
-joins RabbitMQ and Redis as officially supported transports.
|
|
|
+joins RabbitMQ, Redis and QPid as officially supported transports.
|
|
|
|
|
|
The new implementation also takes advantage of long polling,
|
|
|
and closes several issues related to using SQS as a broker.
|
|
@@ -882,7 +882,15 @@ that we now have built-in support for it.
|
|
|
|
|
|
For this a new ``autoretry_for`` argument is now supported by
|
|
|
the task decorators, where you can specify a tuple of exceptions
|
|
|
-to automatically retry for.
|
|
|
+to automatically retry for:
|
|
|
+
|
|
|
+.. code-block:: python
|
|
|
+
|
|
|
+ from twitter.exceptions import FailWhaleError
|
|
|
+
|
|
|
+ @app.task(autoretry_for=(FailWhaleError,))
|
|
|
+ def refresh_timeline(user):
|
|
|
+ return twitter.refresh_timeline(user)
|
|
|
|
|
|
See :ref:`task-autoretry` for more information.
|
|
|
|
|
@@ -890,31 +898,27 @@ Contributed by **Dmitry Malinovsky**.
|
|
|
|
|
|
.. :sha:`75246714dd11e6c463b9dc67f4311690643bff24`
|
|
|
|
|
|
-``Task.replace``
|
|
|
-~~~~~~~~~~~~~~~~
|
|
|
+``Task.replace`` Improvements
|
|
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
-Task.replace changed, removes Task.replace_in_chord.
|
|
|
+- ``self.replace(signature)`` can now replace any task, chord or group,
|
|
|
+ and the signature to replace with can be a chord, group or any other
|
|
|
+ type of signature.
|
|
|
|
|
|
-The two methods had almost the same functionality, but the old
|
|
|
-``Task.replace`` would force the new task to inherit the
|
|
|
-callbacks/errbacks of the existing task.
|
|
|
+- No longer inherits the callbacks and errbacks of the existing task.
|
|
|
|
|
|
-If you replace a node in a tree, then you wouldn't expect the new node to
|
|
|
-inherit the children of the old node, so this seems like unexpected
|
|
|
-behavior.
|
|
|
+ If you replace a node in a tree, then you wouldn't expect the new node to
|
|
|
+ inherit the children of the old node.
|
|
|
|
|
|
-So ``self.replace(sig)`` now works for any task, in addition ``sig`` can now
|
|
|
-be a group.
|
|
|
+- ``Task.replace_in_chord`` has been removed, use ``.replace`` instead.
|
|
|
|
|
|
-Groups are automatically converted to a chord, where the callback
|
|
|
-will "accumulate" the results of the group tasks.
|
|
|
+- If the replacement is a group, that group will be automatically converted
|
|
|
+ to a chord, where the callback "accumulates" the results of the group tasks.
|
|
|
|
|
|
-A new built-in task (`celery.accumulate` was added for this purpose)
|
|
|
+ A new built-in task (`celery.accumulate` was added for this purpose)
|
|
|
|
|
|
Contributed by **Steeve Morin**, and **Ask Solem**.
|
|
|
|
|
|
-Closes #817
|
|
|
-
|
|
|
Remote Task Tracebacks
|
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
@@ -1124,7 +1128,6 @@ See :ref:`beat-solar` for more information.
|
|
|
|
|
|
Contributed by **Mark Parncutt**.
|
|
|
|
|
|
-
|
|
|
Result Backends
|
|
|
---------------
|
|
|
|
|
@@ -1132,7 +1135,7 @@ RPC Result Backend matured
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
Lots of bugs in the previously experimental RPC result backend have been fixed
|
|
|
-and we now consider it production ready.
|
|
|
+and can now be considered to production use.
|
|
|
|
|
|
Contributed by **Ask Solem**, **Morris Tweed**.
|
|
|
|
|
@@ -1208,6 +1211,15 @@ This package is fully Python 3 compliant just as this backend is:
|
|
|
|
|
|
That installs the required package to talk to Consul's HTTP API from Python.
|
|
|
|
|
|
+You can also specify consul as an extension in your dependency on Celery:
|
|
|
+
|
|
|
+.. code-block:: console
|
|
|
+
|
|
|
+ $ pip install celery[consul]
|
|
|
+
|
|
|
+See :ref:`bundles` for more information.
|
|
|
+
|
|
|
+
|
|
|
Contributed by **Wido den Hollander**.
|
|
|
|
|
|
Brand new Cassandra result backend
|
|
@@ -1219,6 +1231,15 @@ library is replacing the old result backend using the older
|
|
|
|
|
|
See :ref:`conf-cassandra-result-backend` for more information.
|
|
|
|
|
|
+To depend on Celery with Cassandra as the result backend use:
|
|
|
+
|
|
|
+.. code-block:: console
|
|
|
+
|
|
|
+ $ pip install celery[cassandra]
|
|
|
+
|
|
|
+You can also combine multiple extension requirements,
|
|
|
+please see :ref:`bundles` for more information.
|
|
|
+
|
|
|
.. # XXX What changed?
|
|
|
|
|
|
New Elasticsearch result backend introduced
|
|
@@ -1226,6 +1247,15 @@ New Elasticsearch result backend introduced
|
|
|
|
|
|
See :ref:`conf-elasticsearch-result-backend` for more information.
|
|
|
|
|
|
+To depend on Celery with Elasticsearch as the result bakend use:
|
|
|
+
|
|
|
+.. code-block:: console
|
|
|
+
|
|
|
+ $ pip install celery[elasticsearch]
|
|
|
+
|
|
|
+You can also combine multiple extension requirements,
|
|
|
+please see :ref:`bundles` for more information.
|
|
|
+
|
|
|
Contributed by **Ahmet Demir**.
|
|
|
|
|
|
New File-system result backend introduced
|
|
@@ -1811,15 +1841,20 @@ Result
|
|
|
TaskSet
|
|
|
~~~~~~~
|
|
|
|
|
|
-TaskSet has been renamed to group and TaskSet will be removed in version 4.0.
|
|
|
+TaskSet has been removed, as it was replaced by the ``group`` construct in
|
|
|
+Celery 3.0.
|
|
|
|
|
|
-Old::
|
|
|
+If you have code like this:
|
|
|
+
|
|
|
+.. codeblock:: pycon
|
|
|
|
|
|
>>> from celery.task import TaskSet
|
|
|
|
|
|
>>> TaskSet(add.subtask((i, i)) for i in xrange(10)).apply_async()
|
|
|
|
|
|
-New::
|
|
|
+You need to replace that with:
|
|
|
+
|
|
|
+.. code-block:: pycon
|
|
|
|
|
|
>>> from celery import group
|
|
|
>>> group(add.s(i, i) for i in xrange(10))()
|
|
@@ -1966,7 +2001,9 @@ Changes to internal API
|
|
|
|
|
|
- ``celery.utils.is_iterable`` has been removed.
|
|
|
|
|
|
- Instead use::
|
|
|
+ Instead use:
|
|
|
+
|
|
|
+ .. code-block:: python
|
|
|
|
|
|
isinstance(x, collections.Iterable)
|
|
|
|