This document describes the current stable version of Celery (3.1). For development docs, go here.

Change history for Celery 2.5

This document contains change notes for bugfix releases in the 2.5.x series, please see What’s new in Celery 2.5 for an overview of what’s new in Celery 2.5.

If you’re looking for versions prior to 2.5 you should visit our History of releases.


release-date:2012-06-06 04:00 P.M BST
release-by:Ask Solem

This is a dummy release performed for the following goals:

  • Protect against force upgrading to Kombu 2.2.0
  • Version parity with django-celery


release-date:2012-04-16 07:00 P.M BST
release-by:Ask Solem
  • A bug causes messages to be sent with UTC timestamps even though CELERY_ENABLE_UTC was not enabled (Issue #636).
  • celerybeat: No longer crashes if an entry’s args is set to None (Issue #657).
  • Autoreload did not work if a module’s __file__ attribute was set to the modules ‘.pyc’ file. (Issue #647).
  • Fixes early 2.5 compatibility where __package__ does not exist (Issue #638).


release-date:2012-04-13 04:30 P.M GMT
release-by:Ask Solem


  • Now depends on Kombu 2.1.5.

  • Django documentation has been moved to the main Celery docs.

    See Django.

  • New celeryd_init signal can be used to configure workers by hostname.

  • Signal.connect can now be used as a decorator.


    from celery.signals import task_sent
    def on_task_sent(**kwargs):
        print("sent task: %r" % (kwargs, ))
  • Invalid task messages are now rejected instead of acked.

    This means that they will be moved to the dead-letter queue introduced in the latest RabbitMQ version (but must be enabled manually, consult the RabbitMQ documentation).

  • Internal logging calls has been cleaned up to work better with tools like Sentry.

    Contributed by David Cramer.

  • New method subtask.clone() can be used to clone an existing subtask with augmented arguments/options.


    >>> s = add.subtask((5, ))
    >>> new = s.clone(args=(10, ), countdown=5})
    >>> new.args
    (10, 5)
    >>> new.options
    {"countdown": 5}
  • Chord callbacks are now triggered in eager mode.


  • Programs now verifies that the pidfile is actually written correctly (Issue #641).

    Hopefully this will crash the worker immediately if the system is out of space to store the complete pidfile.

    In addition, we now verify that existing pidfiles contain a new line so that a partially written pidfile is detected as broken, as before doing:

    echo -n “1” >

    would cause the worker to think that an existing instance was already running (init has pid 1 after all).

  • Fixed 2.5 compatibility issue with use of print_exception.

    Fix contributed by Martin Melin.

  • Fixed 2.5 compatibility issue with imports.

    Fix contributed by Iurii Kriachko.

  • All programs now fix up __package__ when called as main.

    This fixes compatibility with Python 2.5.

    Fix contributed by Martin Melin.

  • [celery control|inspect] can now be configured on the command-line.

    Like with the worker it is now possible to configure celery settings on the command-line for celery control|inspect

    $ celery inspect -- broker.pool_limit=30
  • Version dependency for python-dateutil fixed to be strict.

    Fix contributed by Thomas Meson.

  • Task.__call__ is now optimized away in the task tracer rather than when the task class is created.

    This fixes a bug where a custom __call__ may mysteriously disappear.

  • Autoreload’s inotify support has been improved.

    Contributed by Mher Movsisyan.

  • The Django broker documentation has been improved.

  • Removed confusing warning at top of routing user guide.


release-date:2012-03-01 01:00 P.M GMT
release-by:Ask Solem


  • Eventlet/Gevent: A small typo caused the worker to hang when eventlet/gevent was used, this was because the environment was not monkey patched early enough.
  • Eventlet/Gevent: Another small typo caused the mediator to be started with eventlet/gevent, which would make the worker sometimes hang at shutdown.
  • Mulitprocessing: Fixed an error occurring if the pool was stopped before it was properly started.
  • Proxy objects now redirects __doc__ and __name__ so help(obj) works.
  • Internal timer (timer2) now logs exceptions instead of swallowing them (Issue #626).
  • celery shell: can now be started with --eventlet or --gevent options to apply their monkey patches.


release-date:2012-02-24 04:00 P.M GMT
release-by:Ask Solem

See What’s new in Celery 2.5.

Since the changelog has gained considerable size, we decided to do things differently this time: by having separate “what’s new” documents for major version changes.

Bugfix releases will still be found in the changelog.

Previous topic

Change history for Celery 3.0

Next topic

Change history for Celery 2.4

This Page