======
- **Worker**: 3.1.15 broke ``-Ofair`` behavior.
This regression could result in all tasks executing
in a single child process if ``-Ofair`` was enabled.
- **Canvas**: ``celery.signature`` now properly forwards app argument
in all cases.
- **Task**: ``.retry()`` did not raise the exception correctly
when called without a current exception.
- **Worker**: The ``enable_events`` remote control command
disabled worker-related events by mistake.
- **Django**: Adds support for Django 1.7 class names in INSTALLED_APPS
when using ``app.autodiscover_tasks()``.
- **Sphinx**: ``celery.contrib.sphinx`` now uses ``getfullargspec``
on Python 3.
3.1.15
======
- **Django**: Now makes sure ``django.setup()`` is called
before importing any task modules (Django 1.7 compatibility)
- **Results**: ``result.get()`` was misbehaving by calling
``backend.get_task_meta`` in a finally call leading to
AMQP result backend queues not being properly cleaned up.
3.1.14
======
- **Requirements**
- **Init scripts**: The generic worker init scripts ``status`` command
now gets an accurate pidfile list.
- **Init scripts**: The generic beat script now implements the ``status``
command.
- **Commands**: Multi now writes informational output to stdout instead of
stderr.
- **Worker**: Now ignores not implemented error for ``pool.restart``
- **Task**: Retry no longer raises retry exception when executed in eager mode
- **AMQP Result backend**: Now ensured ``on_interval`` is called at least
every second for blocking calls to properly propagate parent errors.
- **Django**: Compatibility with Django 1.7 on Windows.
- **Programs**: `--umask` argument can be now specified in both octal (if
starting
======
Security Fixes
--------------
* [Security: `CELERYSA-0002`_] Insecure default umask.
The built-in utility used to daemonize the Celery worker service sets
an insecure umask by default (umask 0).
This means that any files or directories created by the worker will
end up having world-writable permissions.
Special thanks to Red Hat for originally discovering and reporting the
issue!
This version will no longer set a default umask by default, so if unset
the umask of the parent process will be used.
.. _`CELERYSA-0002`:
http://github.com/celery/celery/tree/master/docs/sec/CELERYSA-0002.txt
News
----
- **Requirements**
- Now depends on :ref:`Kombu 3.0.21 <kombu:version-3.0.21>`.
- Now depends on :mod:`billiard` 3.3.0.18.
- **App**: ``backend`` argument now also sets the :setting:`CELERY_RESULT_BACKEND`
setting.
- **Task**: ``signature_from_request`` now propagates ``reply_to`` so that
the RPC backend works with retried tasks
- **Task**: ``retry`` will no longer attempt to requeue the task if sending
the retry message fails.
Unrelated exceptions being raised could cause a message loop, so it was
better to remove this behavior.
- **Beat**: Accounts for standard 1ms drift by always waking up 0.010s
earlier.
This will adjust the latency so that the periodic tasks will not move
1ms after every invocation.
- Documentation fixes
- **Worker**: Removed an outdated assert statement that could lead to errors
being masked
Celery is an asynchronous 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 a single or more
worker servers using multiprocessing, Eventlet, or gevent. Tasks can execute
asynchronously (in the background) or synchronously (wait until ready).