# Change history for Celery 2.5 {#changelog-2.5}

This document contains change notes for bugfix releases in the 2.5.x
series, please see `whatsnew-2.5`{.interpreted-text role="ref"} 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`{.interpreted-text role="ref"} of releases.

::: {.contents local=""}
:::

## 2.5.5 {#version-2.5.5}

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`{.interpreted-text role="pypi"}

## 2.5.3 {#version-2.5.3}

release-date

:   2012-04-16 07:00 p.m. BST

release-by

:   Ask Solem

-   A bug causes messages to be sent with UTC time-stamps even though
    `CELERY_ENABLE_UTC`{.interpreted-text role="setting"} wasn\'t
    enabled (Issue #636).
-   `celerybeat`: No longer crashes if an entry\'s args is set to None
    (Issue #657).
-   Auto-reload didn\'t work if a module\'s `__file__` attribute was set
    to the modules `.pyc` file. (Issue #647).
-   Fixes early 2.5 compatibility where `__package__` doesn\'t exist
    (Issue #638).

## 2.5.2 {#version-2.5.2}

release-date

:   2012-04-13 04:30 p.m. GMT

release-by

:   Ask Solem

### News {#v252-news}

-   Now depends on Kombu 2.1.5.

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

    > See `django`{.interpreted-text role="ref"}.

-   New `celeryd_init`{.interpreted-text role="signal"} signal can be
    used to configure workers by hostname.

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

    > Example:
    >
    > ``` python
    > from celery.signals import task_sent
    >
    > @task_sent.connect
    > 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.

    > Example:
    >
    > ``` pycon
    > >>> 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.

### Fixes {#v252-fixes}

-   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:
    >
    > ``` console
    > $ echo -n "1" > celeryd.pid
    > ```
    >
    > 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
    >
    > ``` console
    > $ celery inspect -- broker.pool_limit=30
    > ```

-   Version dependency for `python-dateutil`{.interpreted-text
    role="pypi"} 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.

-   Auto-reload\'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.

## 2.5.1 {#version-2.5.1}

release-date

:   2012-03-01 01:00 p.m. GMT

release-by

:   Ask Solem

### Fixes {#v251-fixes}

-   Eventlet/Gevent: A small typo caused the worker to hang when
    eventlet/gevent was used, this was because the environment wasn\'t
    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.
-   `multiprocessing`{.interpreted-text role="mod"}: 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 <celery shell --eventlet>`{.interpreted-text
    role="option"} or
    `--gevent <celery shell --gevent>`{.interpreted-text role="option"}
    options to apply their monkey patches.

## 2.5.0 {#version-2.5.0}

release-date

:   2012-02-24 04:00 p.m. GMT

release-by

:   Ask Solem

See `whatsnew-2.5`{.interpreted-text role="ref"}.

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.