123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- ===============================
- Celery 1.0 has been released!
- ===============================
- We're happy to announce the release of Celery 1.0.
- What is it?
- ===========
- Celery is a task queue/job queue based on distributed message passing.
- 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. 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.
- 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 and
- databases is also available.
- .. _`RabbitMQ`: http://rabbitmq.org
- Features
- --------
- See http://ask.github.com/celery/getting-started/introduction.html#features
- Stable API
- ==========
- 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
- will raise a ``PendingDeprecationWarning``.
- This warning is silent by default; you need to explicitly turn on display
- of these warnings.
- * Celery 1.4 will contain the backwards-compatible replica, but the warning
- will be promoted to a full-fledged ``DeprecationWarning``. This warning
- is loud by default, and will likely be quite annoying.
- * Celery 1.6 will remove the feature outright.
- See the `Celery Deprecation Timeline`_ for a list of pending removals.
- .. _`Celery Deprecation Timeline`:
- http://ask.github.com/celery/internals/deprecation.html
- What's new?
- ===========
- * 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. 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 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
- 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.
- .. _`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 that does mean 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
- now have the option to revoke it.
- Also, you can rate limit tasks or even shut down the worker remotely.
- It doesn't have many commands yet, but we're waiting for broadcast
- commands to reach its full potential, so please share your ideas
- if you have any.
- * Multiple queues
- 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.
- * Platform agnostic message format.
- 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 behavior you have the option to enable
- :attr:`PeriodicTask.relative`.
- * ... and a lot more!
- 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.
- .. _`changelog`: http://ask.github.com/celery/changelog.html
- **TIP:** If you install the :mod:`setproctitle` module you can see which
- task each worker process is currently executing in ``ps`` listings.
- Just install it using pip: ``pip install setproctitle``.
- Resources
- =========
- * Homepage: http://celeryproject.org
- * Download: http://pypi.python.org/pypi/celery
- * Documentation: http://celeryproject.org/docs/
- * Changelog: http://celeryproject.org/docs/changelog.html
- * Code: http://github.com/ask/celery/
- * FAQ: http://ask.github.com/celery/faq.html
- * Mailing-list: http://groups.google.com/group/celery-users
- * IRC: #celery on irc.freenode.net.
|