123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- .. _changelog:
- ================
- Change history
- ================
- .. contents::
- :local:
- If you're looking for versions prior to 3.x you should see :ref:`history`.
- .. _version-3.0.5:
- 3.0.5
- =====
- :release-date: 2012-08-01 04:00 P.M BST
- - Now depends on kombu 2.3.1 + billiard 2.7.3.11
- - Fixed a bug with the -B option (``cannot pickle thread.lock objects``)
- (Issue #894 + Issue #892, + django-celery #154).
- - The :control:`restart_pool` control command now requires the
- :setting:`CELERYD_POOL_RESTARTS` setting to be enabled
- This change was necessary as the multiprocessing event that the restart
- command depends on is responsible for creating many semaphores/file
- descriptors, resulting in problems in some environments.
- - ``chain.apply`` now passes args to the first task (Issue #889).
- - Documented previously secret options to the Django-Celery monitor
- in the monitoring userguide (Issue #396).
- - Old changelog are now organized in separate documents for each series,
- see :ref:`history`.
- .. _version-3.0.4:
- 3.0.4
- =====
- :release-date: 2012-07-26 07:00 P.M BST
- - Now depends on Kombu 2.3
- - New experimental standalone Celery monitor: Flower
- See :ref:`monitoring-flower` to read more about it!
- Contributed by Mher Movsisyan.
- - Now supports AMQP heartbeats if using the new ``pyamqp://`` transport.
- - The py-amqp transport requires the :mod:`amqp` library to be installed::
- $ pip install amqp
- - Then you need to set the transport URL prefix to ``pyamqp://``.
- - The default heartbeat value is 10 seconds, but this can be changed using
- the :setting:`BROKER_HEARTBEAT` setting::
- BROKER_HEARTBEAT = 5.0
- - If the broker heartbeat is set to 10 seconds, the heartbeats will be
- monitored every 5 seconds (double the hertbeat rate).
- See the `Kombu 2.3 changelog`_ for more information.
- .. _`Kombu 2.3 changelog`:
- http://kombu.readthedocs.org/en/latest/changelog.html#version-2-3-0
- - Now supports RabbitMQ Consumer Cancel Notifications, using the ``pyamqp://``
- transport.
- This is essential when running RabbitMQ in a cluster.
- See the `Kombu 2.3 changelog`_ for more information.
- - Delivery info is no longer passed directly through.
- It was discovered that the SQS transport adds objects that can't
- be pickled to the delivery info mapping, so we had to go back
- to using the whitelist again.
- Fixing this bug also means that the SQS transport is now working again.
- - The semaphore was not properly released when a task was revoked (Issue #877).
- This could lead to tasks being swallowed and not released until a worker
- restart.
- Thanks to Hynek Schlawack for debugging the issue.
- - Retrying a task now also forwards any linked tasks.
- This means that if a task is part of a chain (or linked in some other
- way) and that even if the task is retried, then the next task in the chain
- will be executed when the retry succeeds.
- - Chords: Now supports setting the interval and other keyword arguments
- to the chord unlock task.
- - The interval can now be set as part of the chord subtasks kwargs::
- chord(header)(body, interval=10.0)
- - In addition the chord unlock task now honors the Task.default_retry_delay
- option, used when none is specified, which also means that the default
- interval can also be changed using annotations:
- .. code-block:: python
- CELERY_ANNOTATIONS = {
- 'celery.chord_unlock': {
- 'default_retry_delay': 10.0,
- }
- }
- - New :meth:`@Celery.add_defaults` method can add new default configuration
- dicts to the applications configuration.
- For example::
- config = {'FOO': 10}
- celery.add_defaults(config)
- is the same as ``celery.conf.update(config)`` except that data will not be
- copied, and that it will not be pickled when the worker spawns child
- processes.
- In addition the method accepts a callable::
- def initialize_config():
- # insert heavy stuff that can't be done at import time here.
- celery.add_defaults(initialize_config)
- which means the same as the above except that it will not happen
- until the celery configuration is actually used.
- As an example, Celery can lazily use the configuration of a Flask app::
- flask_app = Flask()
- celery = Celery()
- celery.add_defaults(lambda: flask_app.config)
- - Revoked tasks were not marked as revoked in the result backend (Issue #871).
- Fix contributed by Hynek Schlawack.
- - Eventloop now properly handles the case when the epoll poller object
- has been closed (Issue #882).
- - Fixed syntax error in ``funtests/test_leak.py``
- Fix contributed by Catalin Iacob.
- - group/chunks: Now accepts empty task list (Issue #873).
- - New method names:
- - ``Celery.default_connection()`` ➠ :meth:`~@Celery.connection_or_acquire`.
- - ``Celery.default_producer()`` ➠ :meth:`~@Celery.producer_or_acquire`.
- The old names still work for backward compatibility.
- .. _version-3.0.3:
- 3.0.3
- =====
- :release-date: 2012-07-20 09:17 P.M BST
- :by: Ask Solem
- - amqplib passes the channel object as part of the delivery_info
- and it's not pickleable, so we now remove it.
- .. _version-3.0.2:
- 3.0.2
- =====
- :release-date: 2012-07-20 04:00 P.M BST
- :by: Ask Solem
- - A bug caused the following task options to not take defaults from the
- configuration (Issue #867 + Issue #858)
- The following settings were affected:
- - :setting:`CELERY_IGNORE_RESULT`
- - :setting:`CELERYD_SEND_TASK_ERROR_EMAILS`
- - :setting:`CELERY_TRACK_STARTED`
- - :setting:`CElERY_STORE_ERRORS_EVEN_IF_IGNORED`
- Fix contributed by John Watson.
- - Task Request: ``delivery_info`` is now passed through as-is (Issue #807).
- - The eta argument now supports datetime's with a timezone set (Issue #855).
- - The worker's banner displayed the autoscale settings in the wrong order
- (Issue #859).
- - Extension commands are now loaded after concurrency is set up
- so that they don't interfere with e.g. eventlet patching.
- - Fixed bug in the threaded pool (Issue #863)
- - The task failure handler mixed up the fields in :func:`sys.exc_info`.
- Fix contributed by Rinat Shigapov.
- - Fixed typos and wording in the docs.
- Fix contributed by Paul McMillan
- - New setting: :setting:`CELERY_WORKER_DIRECT`
- If enabled each worker will consume from their own dedicated queue
- which can be used to route tasks to specific workers.
- - Fixed several edge case bugs in the add consumer remote control command.
- - :mod:`~celery.contrib.migrate`: Can now filter and move tasks to specific
- workers if :setting:`CELERY_WORKER_DIRECT` is enabled.
- Among other improvements, the following functions have been added:
- * ``move_direct(filterfun, **opts)``
- * ``move_direct_by_id(task_id, worker_hostname, **opts)``
- * ``move_direct_by_idmap({task_id: worker_hostname, ...}, **opts)``
- * ``move_direct_by_taskmap({task_name: worker_hostname, ...}, **opts)``
- - :meth:`~celery.Celery.default_connection` now accepts a pool argument that
- if set to false causes a new connection to be created instead of acquiring
- one from the pool.
- - New signal: :signal:`celeryd_after_setup`.
- - Default loader now keeps lowercase attributes from the configuration module.
- .. _version-3.0.1:
- 3.0.1
- =====
- :release-date: 2012-07-10 06:00 P.M BST
- :by: Ask Solem
- - Now depends on kombu 2.2.5
- - inspect now supports limit argument::
- myapp.control.inspect(limit=1).ping()
- - Beat: now works with timezone aware datetime's.
- - Task classes inheriting ``from celery import Task``
- mistakingly enabled ``accept_magic_kwargs``.
- - Fixed bug in ``inspect scheduled`` (Issue #829).
- - Beat: Now resets the schedule to upgrade to UTC.
- - The :program:`celery worker` command now works with eventlet/gevent.
- Previously it would not patch the environment early enough.
- - The :program:`celery` command now supports extension commands
- using setuptools entry-points.
- Libraries can add additional commands to the :program:`celery`
- command by adding an entry-point like::
- setup(
- entry_points=[
- 'celery.commands': [
- 'foo = my.module:Command',
- ],
- ],
- ...)
- The command must then support the interface of
- :class:`celery.bin.base.Command`.
- - contrib.migrate: New utilities to move tasks from one queue to another.
- - :func:`~celery.contrib.migrate.move_tasks`
- - :func:`~celery.contrib.migrate.move_task_by_id`
- - The task-sent event now contains ``exchange`` and ``routing_key``
- fields.
- - Fixes bug with installing on Python 3.
- Fix contributed by Jed Smith.
- .. _version-3.0.0:
- 3.0.0 (Chiastic Slide)
- ======================
- :release-date: 2012-07-07 01:30 P.M BST
- :by: Ask Solem
- See :ref:`whatsnew-3.0`.
|