|
@@ -16,9 +16,19 @@ more worker servers, asynchronously (in the background) or synchronously
|
|
|
|
|
|
Celery is already used in production to process millions of tasks a day.
|
|
|
|
|
|
-It was first created for Django, but is now also usable from Python. It can
|
|
|
+It was first created for Django, but is now usable from Python. It can
|
|
|
also operate with other languages via webhooks.
|
|
|
|
|
|
+The recommended message broker is `RabbitMQ`_, but support for Redis or
|
|
|
+database is also available.
|
|
|
+
|
|
|
+.. _`RabbitMQ`: http://rabbitmq.org
|
|
|
+
|
|
|
+Features
|
|
|
+--------
|
|
|
+
|
|
|
+See http://ask.github.com/celery/getting-started/introduction.html#features
|
|
|
+
|
|
|
Stable API
|
|
|
==========
|
|
|
|
|
@@ -44,17 +54,10 @@ See the `Celery Deprecation Timeline`_ for a list of pending removals.
|
|
|
What's new?
|
|
|
===========
|
|
|
|
|
|
-* New periodic task service.
|
|
|
-
|
|
|
- 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
|
|
|
- have to make sure only one instance of this service is running at any one
|
|
|
- time.
|
|
|
+* Awesome new task decorators
|
|
|
|
|
|
- **TIP:** If you're only running a single ``celeryd`` server, you can embed
|
|
|
- ``celerybeat`` inside it. Just add the ``--beat`` argument.
|
|
|
+ Write your tasks as regular functions and decorate them.
|
|
|
+ There's both :func:`task`, and :func:`periodic_task` decorators.
|
|
|
|
|
|
* Tasks are automatically registered
|
|
|
|
|
@@ -64,15 +67,10 @@ What's new?
|
|
|
has also been introduced, this is like django models, where only the
|
|
|
subclasses of an abstract task is registered.
|
|
|
|
|
|
-* Awesome new task decorators
|
|
|
-
|
|
|
- Write your tasks as regular functions and decorate them.
|
|
|
- There's both :func:`task`, and :func:`periodic_task` decorators.
|
|
|
-
|
|
|
* Events
|
|
|
|
|
|
If enabled, the worker is now sending events, telling you what it's
|
|
|
- doing, and wether it's alive or not. This is the basis for the new
|
|
|
+ doing, and whether it's alive or not. This is the basis for the new
|
|
|
real-time web monitor we're working on.
|
|
|
|
|
|
* Rate limiting
|
|
@@ -84,6 +82,19 @@ What's new?
|
|
|
|
|
|
.. _`token bucket algorithm`: http://en.wikipedia.org/wiki/Token_bucket
|
|
|
|
|
|
+* New periodic task service.
|
|
|
+
|
|
|
+ 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
|
|
|
+ have to make sure only one instance of this service is running at any one
|
|
|
+ time.
|
|
|
+
|
|
|
+ **TIP:** If you're only running a single ``celeryd`` server, you can embed
|
|
|
+ ``celerybeat`` inside it. Just add the ``--beat`` argument.
|
|
|
+
|
|
|
+
|
|
|
* Broadcast commands
|
|
|
|
|
|
If you change your mind and don't want to run a task after all, you
|
|
@@ -97,28 +108,28 @@ What's new?
|
|
|
|
|
|
* Multiple queues
|
|
|
|
|
|
- The worker is now able to receive tasks on multiple queues at once. This
|
|
|
- means you can route tasks to arbitrary workers. Read about the wicked
|
|
|
- routing powers of AMQP, and you will surely end up impressed.
|
|
|
+ The worker is now 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.
|
|
|
|
|
|
* Platform agnostic message format.
|
|
|
|
|
|
- The message format has been standardized and now uses the ISO-8601 format
|
|
|
- for dates instead of Python datetime objects. This means you can write task
|
|
|
+ The message format has been standardized and is now using the ISO-8601 format
|
|
|
+ for dates instead of Python ``datetime`` objects. This means you can write task
|
|
|
consumers in other languages than Python (``eceleryd`` anyone?)
|
|
|
|
|
|
* Timely
|
|
|
|
|
|
Periodic tasks are now scheduled on the clock, i.e. ``timedelta(hours=1)``
|
|
|
means every hour at :00 minutes, not every hour from the server starts.
|
|
|
- To revert to the previous behaviour you can enable
|
|
|
+ To revert to the previous behavior you have the option to enable
|
|
|
:attr:`PeriodicTask.relative`.
|
|
|
|
|
|
-* Plus a lot more
|
|
|
+* ... and a lot more!
|
|
|
|
|
|
To read more about these and other changes in detail, please refer to
|
|
|
-the `changelog`_. This document contains crucial information, so if you're
|
|
|
-upgrading from a previous version of Celery, be sure to read the entire
|
|
|
+the `changelog`_. This document contains crucial information relevant to those
|
|
|
+upgrading from a previous version of Celery, so be sure to read the entire
|
|
|
change set before you continue.
|
|
|
|
|
|
.. _`changelog`: http://ask.github.com/celery/changelog.html
|
|
@@ -140,6 +151,8 @@ Resources
|
|
|
|
|
|
* Code: http://github.com/ask/celery/
|
|
|
|
|
|
+* FAQ: http://ask.github.com/celery/faq.html
|
|
|
+
|
|
|
* Mailing-list: http://groups.google.com/celery-users
|
|
|
|
|
|
* IRC: #celery on irc.freenode.net.
|