|
@@ -8,15 +8,16 @@ What is it?
|
|
|
===========
|
|
|
|
|
|
Celery is a task queue/job queue based on distributed message passing.
|
|
|
-It is focused on real-time operation, but has support for scheduling as well.
|
|
|
+It is focused on real-time operation, but supports scheduling as well.
|
|
|
|
|
|
The execution units, called tasks, are executed concurrently on one or
|
|
|
-more worker servers, asynchronously (in the background) or synchronously
|
|
|
+more worker servers. Tasks can execute asynchronously (in the background) or synchronously
|
|
|
(wait until ready).
|
|
|
|
|
|
Celery is already used in production to process millions of tasks a day.
|
|
|
|
|
|
-It was first created for Django, but is now usable from Python. It can
|
|
|
+Celery was originally created for use with Django, but is now usable
|
|
|
+from any Python project. It can
|
|
|
also operate with other languages via webhooks.
|
|
|
|
|
|
The recommended message broker is `RabbitMQ`_, but support for Redis or
|
|
@@ -32,9 +33,9 @@ See http://ask.github.com/celery/getting-started/introduction.html#features
|
|
|
Stable API
|
|
|
==========
|
|
|
|
|
|
-From this version on the API will be considered stable. This means there won't
|
|
|
-be any backwards incompatible changes to new minor versions. Changes to the
|
|
|
-API needs to be deprecated; so, for example, if we decided to remove a function
|
|
|
+From this version on the public API is considered stable. This means there won't
|
|
|
+be any backwards incompatible changes in new minor versions. Changes to the
|
|
|
+API will be deprecated; so, for example, if we decided to remove a function
|
|
|
that existed in Celery 1.0:
|
|
|
|
|
|
* Celery 1.2 will contain a backwards-compatible replica of the function which
|
|
@@ -54,29 +55,33 @@ See the `Celery Deprecation Timeline`_ for a list of pending removals.
|
|
|
What's new?
|
|
|
===========
|
|
|
|
|
|
-* Awesome new task decorators
|
|
|
+* Task decorators
|
|
|
|
|
|
- Write your tasks as regular functions and decorate them.
|
|
|
- There's both :func:`task`, and :func:`periodic_task` decorators.
|
|
|
+ Write tasks as regular functions and decorate them.
|
|
|
+ There are both :func:`task`, and :func:`periodic_task` decorators.
|
|
|
|
|
|
* Tasks are automatically registered
|
|
|
|
|
|
Registering the tasks manually was getting tedious, so now you don't have
|
|
|
- to anymore. However -- You can still do it manually if you need to, just
|
|
|
+ to anymore. You can still do it manually if you need to, just
|
|
|
disable :attr:`Task.autoregister`. The concept of abstract task classes
|
|
|
has also been introduced, this is like django models, where only the
|
|
|
subclasses of an abstract task is registered.
|
|
|
|
|
|
* Events
|
|
|
|
|
|
- If enabled, the worker is now sending events, telling you what it's
|
|
|
- doing, and whether it's alive or not. This is the basis for the new
|
|
|
- real-time web monitor we're working on.
|
|
|
+ If enabled, the worker will send events, telling you what tasks it
|
|
|
+ executes, their results, and how long it took to execute them. It also
|
|
|
+ sends out heartbeats, so listeners are able to detect nonfunctional
|
|
|
+ workers. This is the basis for the new real-time web monitor we're working on
|
|
|
+ (`celerymon`_)
|
|
|
+
|
|
|
+.. _`celerymon`: http://github.com/ask/celerymon/
|
|
|
|
|
|
* Rate limiting
|
|
|
|
|
|
Global and per task rate limits. 10 tasks a second? or one an hour? You
|
|
|
- got it. It's using the awesome `token bucket algorithm`_, which is
|
|
|
+ decide. It's using the awesome `token bucket algorithm`_, which is
|
|
|
commonly used for network traffic shaping. It accounts for bursts of
|
|
|
activity, so your workers won't be bored by having nothing to do.
|
|
|
|
|
@@ -87,7 +92,7 @@ What's new?
|
|
|
Periodic tasks are no longer dispatched by ``celeryd``, but instead by a
|
|
|
separate service called ``celerybeat``. This is an optimized, centralized
|
|
|
service dedicated to your periodic tasks, which means you don't have to
|
|
|
- worry about deadlocks or race conditions any more. But, also it means you
|
|
|
+ worry about deadlocks or race conditions any more. But that does mean you
|
|
|
have to make sure only one instance of this service is running at any one
|
|
|
time.
|
|
|
|
|
@@ -108,7 +113,7 @@ What's new?
|
|
|
|
|
|
* Multiple queues
|
|
|
|
|
|
- The worker is now able to receive tasks on multiple queues at once.
|
|
|
+ The worker is able to receive tasks on multiple queues at once.
|
|
|
This opens up a lot of new possibilities when combined with the impressive
|
|
|
routing support in AMQP.
|
|
|
|
|
@@ -127,8 +132,8 @@ What's new?
|
|
|
|
|
|
* ... and a lot more!
|
|
|
|
|
|
-To read more about these and other changes in detail, please refer to
|
|
|
-the `changelog`_. This document contains crucial information relevant to those
|
|
|
+To read about these and other changes in detail, please refer to
|
|
|
+the `changelog`_. This document contains crucial information for those
|
|
|
upgrading from a previous version of Celery, so be sure to read the entire
|
|
|
change set before you continue.
|
|
|
|