Browse Source

Rollover changelog

Ask Solem 10 years ago
parent
commit
b0c5cf055a
3 changed files with 1269 additions and 1078 deletions
  1. 8 1078
      Changelog
  2. 1260 0
      docs/history/changelog-3.1.rst
  3. 1 0
      docs/history/index.rst

+ 8 - 1078
Changelog

@@ -4,1085 +4,15 @@
  Change history
 ================
 
-This document contains change notes for bugfix releases in the 3.1.x series
-(Cipater), please see :ref:`whatsnew-3.1` for an overview of what's
-new in Celery 3.1.
+This document contains change notes for bugfix releases in the 3.2.x series
+(Cipater), please see :ref:`whatsnew-3.2` for an overview of what's
+new in Celery 3.2.
 
-.. _version-3.1.13:
+.. _version-3.2.0:
 
-3.1.13
-======
-
-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 (Issue #2113).
-
-- **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
-
-    Contributed by Yuval Greenfield, Lucas Wiman, nicholsonjf
-
-- **Worker**: Removed an outdated assert statement that could lead to errors
-  being masked (Issue #2086).
-
-
-
-.. _version-3.1.12:
-
-3.1.12
-======
-:release-date: 2014-06-09 10:12 P.M UTC
-:release-by: Ask Solem
-
-- **Requirements**
-
-    Now depends on :ref:`Kombu 3.0.19 <kombu:version-3.0.19>`.
-
-- **App**: Connections were not being closed after fork due to an error in the
-  after fork handler (Issue #2055).
-
-    This could manifest itself by causing framing errors when using RabbitMQ.
-    (``Unexpected frame``).
-
-- **Django**: ``django.setup()`` was being called too late when
-  using Django 1.7 (Issue #1802).
-
-- **Django**: Fixed problems with event timezones when using Django
-  (``Substantial drift``).
-
-    Celery did not take into account that Django modifies the
-    ``time.timeone`` attributes and friends.
-
-- **Canvas**: ``Signature.link`` now works when the link option is a scalar
-  value (Issue #2019).
-
-- **Prefork pool**: Fixed race conditions for when file descriptors are
-  removed from the event loop.
-
-    Fix contributed by Roger Hu.
-
-- **Prefork pool**: Improved solution for dividing tasks between child
-  processes.
-
-    This change should improve performance when there are many child
-    processes, and also decrease the chance that two subsequent tasks are
-    written to the same child process.
-
-- **Worker**: Now ignores unknown event types, instead of crashing.
-
-    Fix contributed by Illes Solt.
-
-- **Programs**: :program:`celery worker --detach` no longer closes open file
-  descriptors when :envvar:`C_FAKEFORK` is used so that the workers output
-  can be seen.
-
-- **Programs**: The default working directory for :program:`celery worker
-  --detach` is now the current working directory, not ``/``.
-
-- **Canvas**: ``signature(s, app=app)`` did not upgrade serialized signatures
-  to their original class (``subtask_type``) when the ``app`` keyword argument
-  was used.
-
-- **Control**: The ``duplicate nodename`` warning emitted by control commands
-  now shows the duplicate node name.
-
-- **Tasks**: Can now call ``ResultSet.get()`` on a result set without members.
-
-    Fix contributed by Alexey Kotlyarov.
-
-- **App**: Fixed strange traceback mangling issue for
-  ``app.connection_or_acquire``.
-
-- **Programs**: The :program:`celery multi stopwait` command is now documented
-  in usage.
-
-- **Other**: Fixed cleanup problem with ``PromiseProxy`` when an error is
-  raised while trying to evaluate the promise.
-
-- **Other**: The utility used to censor configuration values now handles
-  non-string keys.
-
-    Fix contributed by Luke Pomfrey.
-
-- **Other**: The ``inspect conf`` command did not handle non-string keys well.
-
-    Fix contributed by Jay Farrimond.
-
-- **Programs**: Fixed argument handling problem in
-  :program:`celery worker --detach`.
-
-    Fix contributed by Dmitry Malinovsky.
-
-- **Programs**: :program:`celery worker --detach` did not forward working
-  directory option (Issue #2003).
-
-- **Programs**: :program:`celery inspect registered` no longer includes
-  the list of built-in tasks.
-
-- **Worker**: The ``requires`` attribute for boot steps were not being handled
-  correctly (Issue #2002).
-
-- **Eventlet**: The eventlet pool now supports the ``pool_grow`` and
-  ``pool_shrink`` remote control commands.
-
-    Contributed by Mher Movsisyan.
-
-- **Eventlet**: The eventlet pool now implements statistics for
-  :program:``celery inspect stats``.
-
-    Contributed by Mher Movsisyan.
-
-- **Documentation**: Clarified ``Task.rate_limit`` behavior.
-
-    Contributed by Jonas Haag.
-
-- **Documentation**: ``AbortableTask`` examples now updated to use the new
-  API (Issue #1993).
-
-- **Documentation**: The security documentation examples used an out of date
-  import.
-
-    Fix contributed by Ian Dees.
-
-- **Init scripts**: The CentOS init scripts did not quote
-  :envvar:`CELERY_CHDIR`.
-
-    Fix contributed by ffeast.
-
-.. _version-3.1.11:
-
-3.1.11
-======
-:release-date: 2014-04-16 11:00 P.M UTC
-:release-by: Ask Solem
-
-- **Now compatible with RabbitMQ 3.3.0**
-
-    You need to run Celery 3.1.11 or later when using RabbitMQ 3.3,
-    and if you use the ``librabbitmq`` module you also have to upgrade
-    to librabbitmq 1.5.0:
-
-    .. code-block:: bash
-
-        $ pip install -U librabbitmq
-
-- **Requirements**:
-
-    - Now depends on :ref:`Kombu 3.0.15 <kombu:version-3.0.15>`.
-
-    - Now depends on `billiard 3.3.0.17`_.
-
-    - Bundle ``celery[librabbitmq]`` now depends on :mod:`librabbitmq` 1.5.0.
-
-.. _`billiard 3.3.0.17`:
-    https://github.com/celery/billiard/blob/master/CHANGES.txt
-
-- **Tasks**: The :setting:`CELERY_DEFAULT_DELIVERY_MODE` setting was being
-  ignored (Issue #1953).
-
-- **Worker**: New :option:`--heartbeat-interval` can be used to change the
-  time (in seconds) between sending event heartbeats.
-
-    Contributed by Matthew Duggan and Craig Northway.
-
-- **App**: Fixed memory leaks occurring when creating lots of temporary
-  app instances (Issue #1949).
-
-- **MongoDB**: SSL configuration with non-MongoDB transport breaks MongoDB
-  results backend (Issue #1973).
-
-    Fix contributed by Brian Bouterse.
-
-- **Logging**: The color formatter accidentally modified ``record.msg``
-  (Issue #1939).
-
-- **Results**: Fixed problem with task trails being stored multiple times,
-  causing ``result.collect()`` to hang (Issue #1936, Issue #1943).
-
-- **Results**: ``ResultSet`` now implements a ``.backend`` attribute for
-  compatibility with ``AsyncResult``.
-
-- **Results**: ``.forget()`` now also clears the local cache.
-
-- **Results**: Fixed problem with multiple calls to ``result._set_cache``
-  (Issue #1940).
-
-- **Results**: ``join_native`` populated result cache even if disabled.
-
-- **Results**: The YAML result serializer should now be able to handle storing
-  exceptions.
-
-- **Worker**: No longer sends task error emails for expected errors (in
-  ``@task(throws=(..., )))``.
-
-- **Canvas**: Fixed problem with exception deserialization when using
-  the JSON serializer (Issue #1987).
-
-- **Eventlet**: Fixes crash when ``celery.contrib.batches`` attempted to
-  cancel a non-existing timer (Issue #1984).
-
-- Can now import ``celery.version_info_t``, and ``celery.five`` (Issue #1968).
-
-
-.. _version-3.1.10:
-
-3.1.10
-======
-:release-date: 2014-03-22 09:40 P.M UTC
-:release-by: Ask Solem
-
-- **Requirements**:
-
-    - Now depends on :ref:`Kombu 3.0.14 <kombu:version-3.0.14>`.
-
-- **Redis:** Important note about events (Issue #1882).
-
-    There is a new transport option for Redis that enables monitors
-    to filter out unwanted events.  Enabling this option in the workers
-    will increase performance considerably:
-
-    .. code-block:: python
-
-        BROKER_TRANSPORT_OPTIONS = {'fanout_patterns': True}
-
-    Enabling this option means that your workers will not be able to see
-    workers with the option disabled (or is running an older version of
-    Celery), so if you do enable it then make sure you do so on all
-    nodes.
-
-    See :ref:`redis-caveat-fanout-patterns`.
-
-    This will be the default in Celery 3.2.
-
-- **Results**: The :class:`@AsyncResult` object now keeps a local cache
-  of the final state of the task.
-
-    This means that the global result cache can finally be disabled,
-    and you can do so by setting :setting:`CELERY_MAX_CACHED_RESULTS` to
-    :const:`-1`.  The lifetime of the cache will then be bound to the
-    lifetime of the result object, which will be the default behavior
-    in Celery 3.2.
-
-- **Events**: The "Substantial drift" warning message is now logged once
-  per node name only (Issue #1802).
-
-- **Worker**: Ability to use one log file per child process when using the
-  prefork pool.
-
-    This can be enabled by using the new ``%i`` and ``%I`` format specifiers
-    for the log file name.  See :ref:`worker-files-process-index`.
-
-- **Redis**: New experimental chord join implementation.
-
-    This is an optimization for chords when using the Redis result backend,
-    where the join operation is now considerably faster and using less
-    resources than the previous strategy.
-
-    The new option can be set in the result backend URL:
-
-        CELERY_RESULT_BACKEND = 'redis://localhost?new_join=1'
-
-    This must be enabled manually as it's incompatible
-    with workers and clients not using it, so be sure to enable
-    the option in all clients and workers if you decide to use it.
-
-- **Multi**: With ``-opt:index`` (e.g. :option:`-c:1`) the index now always refers
-  to the position of a node in the argument list.
-
-    This means that referring to a number will work when specifying a list
-    of node names and not just for a number range:
-
-    .. code-block:: bash
-
-        celery multi start A B C D -c:1 4 -c:2-4 8
-
-    In this example ``1`` refers to node A (as it's the first node in the
-    list).
-
-- **Signals**: The sender argument to ``Signal.connect`` can now be a proxy
-  object, which means that it can be used with the task decorator
-  (Issue #1873).
-
-- **Task**: A regression caused the ``queue`` argument to ``Task.retry`` to be
-  ignored (Issue #1892).
-
-- **App**: Fixed error message for :meth:`~@Celery.config_from_envvar`.
-
-    Fix contributed by Dmitry Malinovsky.
-
-- **Canvas**: Chords can now contain a group of other chords (Issue #1921).
-
-- **Canvas**: Chords can now be combined when using the amqp result backend
-  (a chord where the callback is also a chord).
-
-- **Canvas**: Calling ``result.get()`` for a chain task will now complete
-  even if one of the tasks in the chain is ``ignore_result=True``
-  (Issue #1905).
-
-- **Canvas**: Worker now also logs chord errors.
-
-- **Canvas**: A chord task raising an exception will now result in
-  any errbacks (``link_error``) to the chord callback to also be called.
-
-- **Results**: Reliability improvements to the SQLAlchemy database backend
-  (Issue #1786).
-
-    Previously the connection from the ``MainProcess`` was improperly
-    inherited by child processes.
-
-    Fix contributed by Ionel Cristian Mărieș.
-
-- **Task**: Task callbacks and errbacks are now called using the group
-  primitive.
-
-- **Task**: ``Task.apply`` now properly sets ``request.headers``
-  (Issue #1874).
-
-- **Worker**: Fixed ``UnicodeEncodeError`` occuring when worker is started
-  by `supervisord`.
-
-    Fix contributed by Codeb Fan.
-
-- **Beat**: No longer attempts to upgrade a newly created database file
-  (Issue #1923).
-
-- **Beat**: New setting :setting:``CELERYBEAT_SYNC_EVERY`` can be be used
-  to control file sync by specifying the number of tasks to send between
-  each sync.
-
-    Contributed by Chris Clark.
-
-- **Commands**: :program:`celery inspect memdump` no longer crashes
-  if the :mod:`psutil` module is not installed (Issue #1914).
-
-- **Worker**: Remote control commands now always accepts json serialized
-  messages (Issue #1870).
-
-- **Worker**: Gossip will now drop any task related events it receives
-  by mistake (Issue #1882).
-
-
-.. _version-3.1.9:
-
-3.1.9
-=====
-:release-date: 2014-02-10 06:43 P.M UTC
-:release-by: Ask Solem
-
-- **Requirements**:
-
-    - Now depends on :ref:`Kombu 3.0.12 <kombu:version-3.0.12>`.
-
-- **Prefork pool**: Better handling of exiting child processes.
-
-    Fix contributed by Ionel Cristian Mărieș.
-
-- **Prefork pool**: Now makes sure all file descriptors are removed
-  from the hub when a process is cleaned up.
-
-    Fix contributed by Ionel Cristian Mărieș.
-
-- **New Sphinx extension**: for autodoc documentation of tasks:
-  :mod:`celery.contrib.spinx` (Issue #1833).
-
-- **Django**: Now works with Django 1.7a1.
-
-- **Task**: Task.backend is now a property that forwards to ``app.backend``
-  if no custom backend has been specified for the task (Issue #1821).
-
-- **Generic init scripts**: Fixed bug in stop command.
-
-    Fix contributed by Rinat Shigapov.
-
-- **Generic init scripts**: Fixed compatibility with GNU :manpage:`stat`.
-
-    Fix contributed by Paul Kilgo.
-
-- **Generic init scripts**: Fixed compatibility with the minimal
-  :program:`dash` shell (Issue #1815).
-
-- **Commands**: The :program:`celery amqp basic.publish` command was not
-  working properly.
-
-    Fix contributed by Andrey Voronov.
-
-- **Commands**: Did no longer emit an error message if the pidfile exists
-  and the process is still alive (Issue #1855).
-
-- **Commands**: Better error message for missing arguments to preload
-  options (Issue #1860).
-
-- **Commands**: :program:`celery -h` did not work because of a bug in the
-  argument parser (Issue #1849).
-
-- **Worker**: Improved error message for message decoding errors.
-
-- **Time**: Now properly parses the `Z` timezone specifier in ISO 8601 date
-  strings.
-
-    Fix contributed by Martin Davidsson.
-
-- **Worker**: Now uses the *negotiated* heartbeat value to calculate
-  how often to run the heartbeat checks.
-
-- **Beat**: Fixed problem with beat hanging after the first schedule
-  iteration (Issue #1822).
-
-    Fix contributed by Roger Hu.
-
-- **Signals**: The header argument to :signal:`before_task_publish` is now
-  always a dictionary instance so that signal handlers can add headers.
-
-- **Worker**: A list of message headers is now included in message related
-  errors.
-
-.. _version-3.1.8:
-
-3.1.8
-=====
-:release-date: 2014-01-17 10:45 P.M UTC
-:release-by: Ask Solem
-
-- **Requirements**:
-
-    - Now depends on :ref:`Kombu 3.0.10 <kombu:version-3.0.10>`.
-
-    - Now depends on `billiard 3.3.0.14`_.
-
-.. _`billiard 3.3.0.14`:
-    https://github.com/celery/billiard/blob/master/CHANGES.txt
-
-- **Worker**: The event loop was not properly reinitialized at consumer restart
-  which would force the worker to continue with a closed ``epoll`` instance on
-  Linux, resulting in a crash.
-
-- **Events:** Fixed issue with both heartbeats and task events that could
-  result in the data not being kept in sorted order.
-
-    As a result this would force the worker to log "heartbeat missed"
-    events even though the remote node was sending heartbeats in a timely manner.
-
-- **Results:** The pickle serializer no longer converts group results to tuples,
-  and will keep the original type (*Issue #1750*).
-
-- **Results:** ``ResultSet.iterate`` is now pending deprecation.
-
-    The method will be deprecated in version 3.2 and removed in version 3.3.
-
-    Use ``result.get(callback=)`` (or ``result.iter_native()`` where available)
-    instead.
-
-- **Worker**\|eventlet/gevent: A regression caused ``Ctrl+C`` to be ineffective
-  for shutdown.
-
-- **Redis result backend:** Now using a pipeline to store state changes
-  for improved performance.
-
-    Contributed by Pepijn de Vos.
-
-- **Redis result backend:** Will now retry storing the result if disconnected.
-
-- **Worker**\|gossip: Fixed attribute error occurring when another node leaves.
-
-    Fix contributed by Brodie Rao.
-
-- **Generic init scripts:** Now runs a check at startup to verify
-  that any configuration scripts are owned by root and that they
-  are not world/group writeable.
-
-    The init script configuration is a shell script executed by root,
-    so this is a preventive measure to ensure that users do not
-    leave this file vulnerable to changes by unprivileged users.
-
-    .. note::
-
-        Note that upgrading celery will not update the init scripts,
-        instead you need to manually copy the improved versions from the
-        source distribution:
-        https://github.com/celery/celery/tree/3.1/extra/generic-init.d
-
-- **Commands**: The :program:`celery purge` command now warns that the operation
-  will delete all tasks and prompts the user for confirmation.
-
-    A new :option:`-f` was added that can be used to disable
-    interactive mode.
-
-- **Task**: ``.retry()`` did not raise the value provided in the ``exc`` argument
-  when called outside of an error context (*Issue #1755*).
-
-- **Commands:** The :program:`celery multi` command did not forward command
-  line configuration to the target workers.
-
-    The change means that multi will forward the special ``--`` argument and
-    configuration content at the end of the arguments line to the specified
-    workers.
-
-    Example using command-line configuration to set a broker heartbeat
-    from :program:`celery multi`:
-
-    .. code-block:: bash
-
-        $ celery multi start 1 -c3 -- broker.heartbeat=30
-
-    Fix contributed by Antoine Legrand.
-
-- **Canvas:** ``chain.apply_async()`` now properly forwards execution options.
-
-    Fix contributed by Konstantin Podshumok.
-
-- **Redis result backend:** Now takes ``connection_pool`` argument that can be
-  used to change the connection pool class/constructor.
-
-- **Worker:** Now truncates very long arguments and keyword arguments logged by
-  the pool at debug severity.
-
-- **Worker:** The worker now closes all open files on :sig:`SIGHUP` (regression)
-  (*Issue #1768*).
-
-    Fix contributed by Brodie Rao
-
-- **Worker:** Will no longer accept remote control commands while the
-  worker startup phase is incomplete (*Issue #1741*).
-
-- **Commands:** The output of the event dump utility
-  (:program:`celery events -d`) can now be piped into other commands.
-
-- **Documentation:** The RabbitMQ installation instructions for OS X was
-  updated to use modern homebrew practices.
-
-    Contributed by Jon Chen.
-
-- **Commands:** The :program:`celery inspect conf` utility now works.
-
-- **Commands:** The :option:`-no-color` argument was not respected by
-  all commands (*Issue #1799*).
-
-- **App:** Fixed rare bug with ``autodiscover_tasks()`` (*Issue #1797*).
-
-- **Distribution:** The sphinx docs will now always add the parent directory
-  to path so that the current celery source code is used as a basis for
-  API documentation (*Issue #1782*).
-
-- **Documentation:** Supervisord examples contained an extraneous '-' in a
-  `--logfile` argument example.
-
-    Fix contributed by Mohammad Almeer.
-
-.. _version-3.1.7:
-
-3.1.7
-=====
-:release-date: 2013-12-17 06:00 P.M UTC
-:release-by: Ask Solem
-
-.. _v317-important:
-
-Important Notes
----------------
-
-Init script security improvements
----------------------------------
-
-Where the generic init scripts (for ``celeryd``, and ``celerybeat``) before
-delegated the responsibility of dropping privileges to the target application,
-it will now use ``su`` instead, so that the Python program is not trusted
-with superuser privileges.
-
-This is not in reaction to any known exploit, but it will
-limit the possibility of a privilege escalation bug being abused in the
-future.
-
-You have to upgrade the init scripts manually from this directory:
-https://github.com/celery/celery/tree/3.1/extra/generic-init.d
-
-AMQP result backend
-~~~~~~~~~~~~~~~~~~~
-
-The 3.1 release accidentally left the amqp backend configured to be
-non-persistent by default.
-
-Upgrading from 3.0 would give a "not equivalent" error when attempting to
-set or retrieve results for a task.  That is unless you manually set the
-persistence setting::
-
-    CELERY_RESULT_PERSISTENT = True
-
-This version restores the previous value so if you already forced
-the upgrade by removing the existing exchange you must either
-keep the configuration by setting ``CELERY_RESULT_PERSISTENT = False``
-or delete the ``celeryresults`` exchange again.
-
-Synchronous subtasks
-~~~~~~~~~~~~~~~~~~~~
-
-Tasks waiting for the result of a subtask will now emit
-a :exc:`RuntimeWarning` warning when using the prefork pool,
-and in 3.2 this will result in an exception being raised.
-
-It's not legal for tasks to block by waiting for subtasks
-as this is likely to lead to resource starvation and eventually
-deadlock when using the prefork pool (see also :ref:`task-synchronous-subtasks`).
-
-If you really know what you are doing you can avoid the warning (and
-the future exception being raised) by moving the operation in a whitelist
-block:
-
-.. code-block:: python
-
-    from celery.result import allow_join_result
-
-    @app.task
-    def misbehaving():
-        result = other_task.delay()
-        with allow_join_result():
-            result.get()
-
-Note also that if you wait for the result of a subtask in any form
-when using the prefork pool you must also disable the pool prefetching
-behavior with the worker :ref:`-Ofair option <prefork-pool-prefetch>`.
-
-.. _v317-fixes:
-
-Fixes
------
-
-- Now depends on :ref:`Kombu 3.0.8 <kombu:version-3.0.8>`.
-
-- Now depends on :mod:`billiard` 3.3.0.13
-
-- Events: Fixed compatibility with non-standard json libraries
-  that sends float as :class:`decimal.Decimal` (Issue #1731)
-
-- Events: State worker objects now always defines attributes:
-  ``active``, ``processed``, ``loadavg``, ``sw_ident``, ``sw_ver``
-  and ``sw_sys``.
-
-- Worker: Now keeps count of the total number of tasks processed,
-  not just by type (``all_active_count``).
-
-- Init scripts:  Fixed problem with reading configuration file
-  when the init script is symlinked to a runlevel (e.g. ``S02celeryd``).
-  (Issue #1740).
-
-    This also removed a rarely used feature where you can symlink the script
-    to provide alternative configurations.  You instead copy the script
-    and give it a new name, but perhaps a better solution is to provide
-    arguments to ``CELERYD_OPTS`` to separate them:
-
-    .. code-block:: bash
-
-        CELERYD_NODES="X1 X2 Y1 Y2"
-        CELERYD_OPTS="-A:X1 x -A:X2 x -A:Y1 y -A:Y2 y"
-
-- Fallback chord unlock task is now always called after the chord header
-  (Issue #1700).
-
-    This means that the unlock task will not be started if there's
-    an error sending the header.
-
-- Celery command: Fixed problem with arguments for some control commands.
-
-    Fix contributed by Konstantin Podshumok.
-
-- Fixed bug in ``utcoffset`` where the offset when in DST would be
-  completely wrong (Issue #1743).
-
-- Worker: Errors occurring while attempting to serialize the result of a
-  task will now cause the task to be marked with failure and a
-  :class:`kombu.exceptions.EncodingError` error.
-
-    Fix contributed by Ionel Cristian Mărieș.
-
-- Worker with ``-B`` argument did not properly shut down the beat instance.
-
-- Worker: The ``%n`` and ``%h`` formats are now also supported by the
-  :option:`--logfile`, :option:`--pidfile` and :option:`--statedb` arguments.
-
-    Example:
-
-    .. code-block:: bash
-
-        $ celery -A proj worker -n foo@%h --logfile=%n.log --statedb=%n.db
-
-- Redis/Cache result backends: Will now timeout if keys evicted while trying
-  to join a chord.
-
-- The fallbock unlock chord task now raises :exc:`Retry` so that the
-  retry even is properly logged by the worker.
-
-- Multi: Will no longer apply Eventlet/gevent monkey patches (Issue #1717).
-
-- Redis result backend: Now supports UNIX sockets.
-
-    Like the Redis broker transport the result backend now also supports
-    using ``redis+socket:///tmp/redis.sock`` URLs.
-
-    Contributed by Alcides Viamontes Esquivel.
-
-- Events: Events sent by clients was mistaken for worker related events
-  (Issue #1714).
-
-    For ``events.State`` the tasks now have a ``Task.client`` attribute
-    that is set when a ``task-sent`` event is being received.
-
-    Also, a clients logical clock is not in sync with the cluster so
-    they live in a "time bubble".  So for this reason monitors will no
-    longer attempt to merge with the clock of an event sent by a client,
-    instead it will fake the value by using the current clock with
-    a skew of -1.
-
-- Prefork pool: The method used to find terminated processes was flawed
-  in that it did not also take into account missing popen objects.
-
-- Canvas: ``group`` and ``chord`` now works with anon signatures as long
-  as the group/chord object is associated with an app instance (Issue #1744).
-
-    You can pass the app by using ``group(..., app=app)``.
-
-.. _version-3.1.6:
-
-3.1.6
-=====
-:release-date: 2013-12-02 06:00 P.M UTC
-:release-by: Ask Solem
-
-- Now depends on :mod:`billiard` 3.3.0.10.
-
-- Now depends on :ref:`Kombu 3.0.7 <kombu:version-3.0.7>`.
-
-- Fixed problem where Mingle caused the worker to hang at startup
-  (Issue #1686).
-
-- Beat: Would attempt to drop privileges twice (Issue #1708).
-
-- Windows: Fixed error with ``geteuid`` not being available (Issue #1676).
-
-- Tasks can now provide a list of expected error classes (Issue #1682).
-
-    The list should only include errors that the task is expected to raise
-    during normal operation::
-
-        @task(throws=(KeyError, HttpNotFound))
-
-    What happens when an exceptions is raised depends on the type of error:
-
-    - Expected errors (included in ``Task.throws``)
-
-        Will be logged using severity ``INFO``, and traceback is excluded.
-
-    - Unexpected errors
-
-        Will be logged using severity ``ERROR``, with traceback included.
-
-- Cache result backend now compatible with Python 3 (Issue #1697).
-
-- CentOS init script: Now compatible with sys-v style init symlinks.
-
-    Fix contributed by Jonathan Jordan.
-
-- Events: Fixed problem when task name is not defined (Issue #1710).
-
-    Fix contributed by Mher Movsisyan.
-
-- Task: Fixed unbound local errors (Issue #1684).
-
-    Fix contributed by Markus Ullmann.
-
-- Canvas: Now unrolls groups with only one task (optimization) (Issue #1656).
-
-- Task: Fixed problem with eta and timezones.
-
-    Fix contributed by Alexander Koval.
-
-- Django: Worker now performs model validation (Issue #1681).
-
-- Task decorator now emits less confusing errors when used with
-  incorrect arguments (Issue #1692).
-
-- Task: New method ``Task.send_event`` can be used to send custom events
-  to Flower and other monitors.
-
-- Fixed a compatibility issue with non-abstract task classes
-
-- Events from clients now uses new node name format (``gen<pid>@<hostname>``).
-
-- Fixed rare bug with Callable not being defined at interpreter shutdown
-  (Issue #1678).
-
-    Fix contributed by Nick Johnson.
-
-- Fixed Python 2.6 compatibility (Issue #1679).
-
-.. _version-3.1.5:
-
-3.1.5
-=====
-:release-date: 2013-11-21 06:20 P.M UTC
-:release-by: Ask Solem
-
-- Now depends on :ref:`Kombu 3.0.6 <kombu:version-3.0.6>`.
-
-- Now depends on :mod:`billiard` 3.3.0.8
-
-- App: ``config_from_object`` is now lazy (Issue #1665).
-
-- App: ``autodiscover_tasks`` is now lazy.
-
-    Django users should now wrap access to the settings object
-    in a lambda::
-
-        app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
-
-    this ensures that the settings object is not prepared
-    prematurely.
-
-- Fixed regression for ``--app`` argument experienced by
-  some users (Issue #1653).
-
-- Worker: Now respects the ``--uid`` and ``--gid`` arguments
-  even if ``--detach`` is not enabled.
-
-- Beat: Now respects the ``--uid`` and ``--gid`` arguments
-  even if ``--detach`` is not enabled.
-
-- Python 3: Fixed unorderable error occuring with the worker ``-B``
-  argument enabled.
-
-- ``celery.VERSION`` is now a named tuple.
-
-- ``maybe_signature(list)`` is now applied recursively (Issue #1645).
-
-- ``celery shell`` command: Fixed ``IPython.frontend`` deprecation warning.
-
-- The default app no longer includes the builtin fixups.
-
-    This fixes a bug where ``celery multi`` would attempt
-    to load the Django settings module before entering
-    the target working directory.
-
-- The Django daemonization tutorial was changed.
-
-    Users no longer have to explicitly export ``DJANGO_SETTINGS_MODULE``
-    in :file:`/etc/default/celeryd` when the new project layout is used.
-
-- Redis result backend: expiry value can now be 0 (Issue #1661).
-
-- Censoring settings now accounts for non-string keys (Issue #1663).
-
-- App: New ``autofinalize`` option.
-
-    Apps are automatically finalized when the task registry is accessed.
-    You can now disable this behavior so that an exception is raised
-    instead.
-
-    Example:
-
-    .. code-block:: python
-
-        app = Celery(autofinalize=False)
-
-        # raises RuntimeError
-        tasks = app.tasks
-
-        @app.task
-        def add(x, y):
-            return x + y
-
-        # raises RuntimeError
-        add.delay(2, 2)
-
-        app.finalize()
-        # no longer raises:
-        tasks = app.tasks
-        add.delay(2, 2)
-
-- The worker did not send monitoring events during shutdown.
-
-- Worker: Mingle and gossip is now automatically disabled when
-  used with an unsupported transport (Issue #1664).
-
-- ``celery`` command:  Preload options now supports
-  the rare ``--opt value`` format (Issue #1668).
-
-- ``celery`` command: Accidentally removed options
-  appearing before the subcommand, these are now moved to the end
-  instead.
-
-- Worker now properly responds to ``inspect stats`` commands
-  even if received before startup is complete (Issue #1659).
-
-- :signal:`task_postrun` is now sent within a finally block, to make
-  sure the signal is always sent.
-
-- Beat: Fixed syntax error in string formatting.
-
-    Contributed by nadad.
-
-- Fixed typos in the documentation.
-
-    Fixes contributed by Loic Bistuer, sunfinite.
-
-- Nested chains now works properly when constructed using the
-  ``chain`` type instead of the ``|`` operator (Issue #1656).
-
-.. _version-3.1.4:
-
-3.1.4
-=====
-:release-date: 2013-11-15 11:40 P.M UTC
-:release-by: Ask Solem
-
-- Now depends on :ref:`Kombu 3.0.5 <kombu:version-3.0.5>`.
-
-- Now depends on :mod:`billiard` 3.3.0.7
-
-- Worker accidentally set a default socket timeout of 5 seconds.
-
-- Django: Fixup now sets the default app so that threads will use
-  the same app instance (e.g. for manage.py runserver).
-
-- Worker: Fixed Unicode error crash at startup experienced by some users.
-
-- Calling ``.apply_async`` on an empty chain now works again (Issue #1650).
-
-- The ``celery multi show`` command now generates the same arguments
-  as the start command does.
-
-- The ``--app`` argument could end up using a module object instead
-  of an app instance (with a resulting crash).
-
-- Fixed a syntax error problem in the celerybeat init script.
-
-    Fix contributed by Vsevolod.
-
-- Tests now passing on PyPy 2.1 and 2.2.
-
-.. _version-3.1.3:
-
-3.1.3
-=====
-:release-date: 2013-11-13 00:55 A.M UTC
-:release-by: Ask Solem
-
-- Fixed compatibility problem with Python 2.7.0 - 2.7.5 (Issue #1637)
-
-    ``unpack_from`` started supporting ``memoryview`` arguments
-    in Python 2.7.6.
-
-- Worker: :option:`-B` argument accidentally closed files used
-  for logging.
-
-- Task decorated tasks now keep their docstring (Issue #1636)
-
-.. _version-3.1.2:
-
-3.1.2
-=====
-:release-date: 2013-11-12 08:00 P.M UTC
-:release-by: Ask Solem
-
-- Now depends on :mod:`billiard` 3.3.0.6
-
-- No longer needs the billiard C extension to be installed.
-
-- The worker silently ignored task errors.
-
-- Django: Fixed ``ImproperlyConfigured`` error raised
-  when no database backend specified.
-
-    Fix contributed by j0hnsmith
-
-- Prefork pool: Now using ``_multiprocessing.read`` with ``memoryview``
-  if available.
-
-- ``close_open_fds`` now uses ``os.closerange`` if available.
-
-- ``get_fdmax`` now takes value from ``sysconfig`` if possible.
-
-.. _version-3.1.1:
-
-3.1.1
-=====
-:release-date: 2013-11-11 06:30 P.M UTC
-:release-by: Ask Solem
-
-- Now depends on :mod:`billiard` 3.3.0.4.
-
-- Python 3: Fixed compatibility issues.
-
-- Windows:  Accidentally showed warning that the billiard C extension
-  was not installed (Issue #1630).
-
-- Django: Tutorial updated with a solution that sets a default
-  :envvar:`DJANGO_SETTINGS_MODULE` so that it doesn't have to be typed
-  in with the :program:`celery` command.
-
-    Also fixed typos in the tutorial, and added the settings
-    required to use the Django database backend.
-
-    Thanks to Chris Ward, orarbel.
-
-- Django: Fixed a problem when using the Django settings in Django 1.6.
-
-- Django: Fixup should not be applied if the django loader is active.
-
-- Worker:  Fixed attribute error for ``human_write_stats`` when using the
-  compatibility prefork pool implementation.
-
-- Worker: Fixed compatibility with billiard without C extension.
-
-- Inspect.conf: Now supports a ``with_defaults`` argument.
-
-- Group.restore: The backend argument was not respected.
-
-.. _version-3.1.0:
-
-3.1.0
+3.2.0
 =======
-:release-date: 2013-11-09 11:00 P.M UTC
-:release-by: Ask Solem
+:release-date: TBA
+:release-by:
 
-See :ref:`whatsnew-3.1`.
+See :ref:`whatsnew-3.2`.

+ 1260 - 0
docs/history/changelog-3.1.rst

@@ -0,0 +1,1260 @@
+.. _changelog-3.1:
+
+===============================
+ Change history for Celery 3.1
+===============================
+
+This document contains change notes for bugfix releases in the 3.1.x series
+(Cipater), please see :ref:`whatsnew-3.1` for an overview of what's
+new in Celery 3.1.
+
+If you're looking for versions prior to 3.1.x you should go to :ref:`history`.
+
+.. _version-3.1.17:
+
+3.1.17
+======
+
+.. admonition:: CELERYD_FORCE_EXECV should not be used.
+
+    Please disable this option if you're using the RabbitMQ or Redis
+    transports.
+
+    Keeping this option enabled in 3.1 means the async based worker will
+    be disabled, so using is more likely to lead to trouble than doing
+    anything good.
+
+- **Requirements**
+
+    - Now depends on :ref:`Kombu 3.0.24 <kombu:version-3.0.24>`.
+
+    - Now depends on :mod:`billiard` 3.3.0.19.
+
+- **Task**: The timing for ETA/countdown tasks were off after the example ``LocalTimezone``
+  implementation in the Python documentation no longer works in Python 3.4.
+  (Issue #2306).
+
+- **Task**: Raising :exc:`~celery.exceptions.Ignore` no longer sends
+  ``task-failed`` event (Issue #2365).
+
+- **Redis result backend**: Fixed errors about unbound local ``self``.
+
+    Fix contributed by Thomas French.
+
+- **Task**: Callbacks was not called properly if ``link`` was a list of
+  signatures (Issuse #2350).
+
+- **Canvas**: chain and group now handles json serialized signatures
+  (Issue #2076).
+
+- **Canvas**: The ``chord_size`` attribute is now set for all canvas primitives,
+  making sure more combinations will work with the ``new_join`` optimization
+  for Redis (Issue #2339).
+
+- **Task**: Fixed problem with app not being properly propagated to
+  ``trace_task`` in all cases.
+
+    Fix contributed by kristaps.
+
+- **Worker**: Expires from task message now associated with a timezone.
+
+    Fix contributed by Albert Wang.
+
+- **Cassandra result backend**: Fixed problems when using detailed mode.
+
+    When using the Cassandra backend in detailed mode, a regression
+    caused errors when attempting to retrieve results.
+
+    Fix contributed by Gino Ledesma.
+
+- **Task**: Exception info was not properly set for tasks raising
+  :exc:`~celery.exceptions.Reject` (Issue #2043).
+
+- **Worker**: The set of revokes tasks are now deduplicated when loading from
+  the worker state database (Issue #2336).
+
+- **celery.contrib.rdb**: Fixed problems with ``rdb.set_trace`` calling stop
+  from the wrong frame.
+
+    Fix contributed by llllllllll.
+
+- **Canvas**: ``chain`` and ``chord`` can now be immutable.
+
+- **Canvas**: ``chord.apply_async`` will now keep partial args set in
+  ``self.args`` (Issue #2299).
+
+- **Results**: Small refactoring so that results are decoded the same way in
+  all result backends.
+
+- **Logging**: The ``processName`` format was introduced in Py2.6.2 so for
+  compatibility this format is now excluded when using earlier versions
+  (Issue #1644).
+
+.. _version-3.1.16:
+
+3.1.16
+======
+:release-date: 2014-10-03 06:00 P.M UTC
+:release-by: Ask Solem
+
+- **Worker**: 3.1.15 broke ``-Ofair`` behavior (Issue #2286).
+
+    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.
+
+    Fix contributed by Andrea Rabbaglietti.
+
+- **Worker**: The ``enable_events`` remote control command
+  disabled worker-related events by mistake (Issue #2272).
+
+    Fix contributed by Konstantinos Koukopoulos.
+
+- **Django**: Adds support for Django 1.7 class names in INSTALLED_APPS
+  when using ``app.autodiscover_tasks()``  (Issue #2248).
+
+- **Sphinx**: ``celery.contrib.sphinx`` now uses ``getfullargspec``
+  on Python 3 (Issue #2302).
+
+- **Redis/Cache Backends**: Chords will now run at most once if one or more tasks
+  in the chord are executed multiple times for some reason.
+
+.. _version-3.1.15:
+
+3.1.15
+======
+:release-date: 2014-09-14 11:00 P.M UTC
+:release-by: Ask Solem
+
+- **Django**: Now makes sure ``django.setup()`` is called
+  before importing any task modules (Django 1.7 compatibility, Issue #2227) 
+
+- **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 (Issue #2245).
+
+.. _version-3.1.14:
+
+3.1.14
+======
+:release-date: 2014-09-08 03:00 P.M UTC
+:release-by: Ask Solem
+
+- **Requirements**
+
+    - Now depends on :ref:`Kombu 3.0.22 <kombu:version-3.0.22>`.
+
+- **Init scripts**: The generic worker init scripts ``status`` command
+  now gets an accurate pidfile list (Issue #1942).
+
+- **Init scripts**: The generic beat script now implements the ``status``
+   command.
+
+    Contributed by John Whitlock.
+
+- **Commands**: Multi now writes informational output to stdout instead of stderr.
+
+- **Worker**: Now ignores not implemented error for ``pool.restart``
+  (Issue #2153).
+
+- **Task**: Retry no longer raises retry exception when executed in eager
+  mode (Issue #2164).
+
+- **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 (Issue #2126).
+
+- **Programs**: `--umask` argument can be now specified in both octal (if starting
+  with 0) or decimal.
+
+
+.. _version-3.1.13:
+
+3.1.13
+======
+
+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 (Issue #2113).
+
+- **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
+
+    Contributed by Yuval Greenfield, Lucas Wiman, nicholsonjf
+
+- **Worker**: Removed an outdated assert statement that could lead to errors
+  being masked (Issue #2086).
+
+
+
+.. _version-3.1.12:
+
+3.1.12
+======
+:release-date: 2014-06-09 10:12 P.M UTC
+:release-by: Ask Solem
+
+- **Requirements**
+
+    Now depends on :ref:`Kombu 3.0.19 <kombu:version-3.0.19>`.
+
+- **App**: Connections were not being closed after fork due to an error in the
+  after fork handler (Issue #2055).
+
+    This could manifest itself by causing framing errors when using RabbitMQ.
+    (``Unexpected frame``).
+
+- **Django**: ``django.setup()`` was being called too late when
+  using Django 1.7 (Issue #1802).
+
+- **Django**: Fixed problems with event timezones when using Django
+  (``Substantial drift``).
+
+    Celery did not take into account that Django modifies the
+    ``time.timeone`` attributes and friends.
+
+- **Canvas**: ``Signature.link`` now works when the link option is a scalar
+  value (Issue #2019).
+
+- **Prefork pool**: Fixed race conditions for when file descriptors are
+  removed from the event loop.
+
+    Fix contributed by Roger Hu.
+
+- **Prefork pool**: Improved solution for dividing tasks between child
+  processes.
+
+    This change should improve performance when there are many child
+    processes, and also decrease the chance that two subsequent tasks are
+    written to the same child process.
+
+- **Worker**: Now ignores unknown event types, instead of crashing.
+
+    Fix contributed by Illes Solt.
+
+- **Programs**: :program:`celery worker --detach` no longer closes open file
+  descriptors when :envvar:`C_FAKEFORK` is used so that the workers output
+  can be seen.
+
+- **Programs**: The default working directory for :program:`celery worker
+  --detach` is now the current working directory, not ``/``.
+
+- **Canvas**: ``signature(s, app=app)`` did not upgrade serialized signatures
+  to their original class (``subtask_type``) when the ``app`` keyword argument
+  was used.
+
+- **Control**: The ``duplicate nodename`` warning emitted by control commands
+  now shows the duplicate node name.
+
+- **Tasks**: Can now call ``ResultSet.get()`` on a result set without members.
+
+    Fix contributed by Alexey Kotlyarov.
+
+- **App**: Fixed strange traceback mangling issue for
+  ``app.connection_or_acquire``.
+
+- **Programs**: The :program:`celery multi stopwait` command is now documented
+  in usage.
+
+- **Other**: Fixed cleanup problem with ``PromiseProxy`` when an error is
+  raised while trying to evaluate the promise.
+
+- **Other**: The utility used to censor configuration values now handles
+  non-string keys.
+
+    Fix contributed by Luke Pomfrey.
+
+- **Other**: The ``inspect conf`` command did not handle non-string keys well.
+
+    Fix contributed by Jay Farrimond.
+
+- **Programs**: Fixed argument handling problem in
+  :program:`celery worker --detach`.
+
+    Fix contributed by Dmitry Malinovsky.
+
+- **Programs**: :program:`celery worker --detach` did not forward working
+  directory option (Issue #2003).
+
+- **Programs**: :program:`celery inspect registered` no longer includes
+  the list of built-in tasks.
+
+- **Worker**: The ``requires`` attribute for boot steps were not being handled
+  correctly (Issue #2002).
+
+- **Eventlet**: The eventlet pool now supports the ``pool_grow`` and
+  ``pool_shrink`` remote control commands.
+
+    Contributed by Mher Movsisyan.
+
+- **Eventlet**: The eventlet pool now implements statistics for
+  :program:``celery inspect stats``.
+
+    Contributed by Mher Movsisyan.
+
+- **Documentation**: Clarified ``Task.rate_limit`` behavior.
+
+    Contributed by Jonas Haag.
+
+- **Documentation**: ``AbortableTask`` examples now updated to use the new
+  API (Issue #1993).
+
+- **Documentation**: The security documentation examples used an out of date
+  import.
+
+    Fix contributed by Ian Dees.
+
+- **Init scripts**: The CentOS init scripts did not quote
+  :envvar:`CELERY_CHDIR`.
+
+    Fix contributed by ffeast.
+
+.. _version-3.1.11:
+
+3.1.11
+======
+:release-date: 2014-04-16 11:00 P.M UTC
+:release-by: Ask Solem
+
+- **Now compatible with RabbitMQ 3.3.0**
+
+    You need to run Celery 3.1.11 or later when using RabbitMQ 3.3,
+    and if you use the ``librabbitmq`` module you also have to upgrade
+    to librabbitmq 1.5.0:
+
+    .. code-block:: bash
+
+        $ pip install -U librabbitmq
+
+- **Requirements**:
+
+    - Now depends on :ref:`Kombu 3.0.15 <kombu:version-3.0.15>`.
+
+    - Now depends on `billiard 3.3.0.17`_.
+
+    - Bundle ``celery[librabbitmq]`` now depends on :mod:`librabbitmq` 1.5.0.
+
+.. _`billiard 3.3.0.17`:
+    https://github.com/celery/billiard/blob/master/CHANGES.txt
+
+- **Tasks**: The :setting:`CELERY_DEFAULT_DELIVERY_MODE` setting was being
+  ignored (Issue #1953).
+
+- **Worker**: New :option:`--heartbeat-interval` can be used to change the
+  time (in seconds) between sending event heartbeats.
+
+    Contributed by Matthew Duggan and Craig Northway.
+
+- **App**: Fixed memory leaks occurring when creating lots of temporary
+  app instances (Issue #1949).
+
+- **MongoDB**: SSL configuration with non-MongoDB transport breaks MongoDB
+  results backend (Issue #1973).
+
+    Fix contributed by Brian Bouterse.
+
+- **Logging**: The color formatter accidentally modified ``record.msg``
+  (Issue #1939).
+
+- **Results**: Fixed problem with task trails being stored multiple times,
+  causing ``result.collect()`` to hang (Issue #1936, Issue #1943).
+
+- **Results**: ``ResultSet`` now implements a ``.backend`` attribute for
+  compatibility with ``AsyncResult``.
+
+- **Results**: ``.forget()`` now also clears the local cache.
+
+- **Results**: Fixed problem with multiple calls to ``result._set_cache``
+  (Issue #1940).
+
+- **Results**: ``join_native`` populated result cache even if disabled.
+
+- **Results**: The YAML result serializer should now be able to handle storing
+  exceptions.
+
+- **Worker**: No longer sends task error emails for expected errors (in
+  ``@task(throws=(..., )))``.
+
+- **Canvas**: Fixed problem with exception deserialization when using
+  the JSON serializer (Issue #1987).
+
+- **Eventlet**: Fixes crash when ``celery.contrib.batches`` attempted to
+  cancel a non-existing timer (Issue #1984).
+
+- Can now import ``celery.version_info_t``, and ``celery.five`` (Issue #1968).
+
+
+.. _version-3.1.10:
+
+3.1.10
+======
+:release-date: 2014-03-22 09:40 P.M UTC
+:release-by: Ask Solem
+
+- **Requirements**:
+
+    - Now depends on :ref:`Kombu 3.0.14 <kombu:version-3.0.14>`.
+
+- **Results**:
+
+    Reliability improvements to the SQLAlchemy database backend. Previously the
+    connection from the MainProcess was improperly shared with the workers.
+    (Issue #1786)
+
+- **Redis:** Important note about events (Issue #1882).
+
+    There is a new transport option for Redis that enables monitors
+    to filter out unwanted events.  Enabling this option in the workers
+    will increase performance considerably:
+
+    .. code-block:: python
+
+        BROKER_TRANSPORT_OPTIONS = {'fanout_patterns': True}
+
+    Enabling this option means that your workers will not be able to see
+    workers with the option disabled (or is running an older version of
+    Celery), so if you do enable it then make sure you do so on all
+    nodes.
+
+    See :ref:`redis-caveats`.
+
+    This will be the default in Celery 3.2.
+
+- **Results**: The :class:`@AsyncResult` object now keeps a local cache
+  of the final state of the task.
+
+    This means that the global result cache can finally be disabled,
+    and you can do so by setting :setting:`CELERY_MAX_CACHED_RESULTS` to
+    :const:`-1`.  The lifetime of the cache will then be bound to the
+    lifetime of the result object, which will be the default behavior
+    in Celery 3.2.
+
+- **Events**: The "Substantial drift" warning message is now logged once
+  per node name only (Issue #1802).
+
+- **Worker**: Ability to use one log file per child process when using the
+  prefork pool.
+
+    This can be enabled by using the new ``%i`` and ``%I`` format specifiers
+    for the log file name.  See :ref:`worker-files-process-index`.
+
+- **Redis**: New experimental chord join implementation.
+
+    This is an optimization for chords when using the Redis result backend,
+    where the join operation is now considerably faster and using less
+    resources than the previous strategy.
+
+    The new option can be set in the result backend URL:
+
+        CELERY_RESULT_BACKEND = 'redis://localhost?new_join=1'
+
+    This must be enabled manually as it's incompatible
+    with workers and clients not using it, so be sure to enable
+    the option in all clients and workers if you decide to use it.
+
+- **Multi**: With ``-opt:index`` (e.g. :option:`-c:1`) the index now always refers
+  to the position of a node in the argument list.
+
+    This means that referring to a number will work when specifying a list
+    of node names and not just for a number range:
+
+    .. code-block:: bash
+
+        celery multi start A B C D -c:1 4 -c:2-4 8
+
+    In this example ``1`` refers to node A (as it's the first node in the
+    list).
+
+- **Signals**: The sender argument to ``Signal.connect`` can now be a proxy
+  object, which means that it can be used with the task decorator
+  (Issue #1873).
+
+- **Task**: A regression caused the ``queue`` argument to ``Task.retry`` to be
+  ignored (Issue #1892).
+
+- **App**: Fixed error message for :meth:`~@Celery.config_from_envvar`.
+
+    Fix contributed by Dmitry Malinovsky.
+
+- **Canvas**: Chords can now contain a group of other chords (Issue #1921).
+
+- **Canvas**: Chords can now be combined when using the amqp result backend
+  (a chord where the callback is also a chord).
+
+- **Canvas**: Calling ``result.get()`` for a chain task will now complete
+  even if one of the tasks in the chain is ``ignore_result=True``
+  (Issue #1905).
+
+- **Canvas**: Worker now also logs chord errors.
+
+- **Canvas**: A chord task raising an exception will now result in
+  any errbacks (``link_error``) to the chord callback to also be called.
+
+- **Results**: Reliability improvements to the SQLAlchemy database backend
+  (Issue #1786).
+
+    Previously the connection from the ``MainProcess`` was improperly
+    inherited by child processes.
+
+    Fix contributed by Ionel Cristian Mărieș.
+
+- **Task**: Task callbacks and errbacks are now called using the group
+  primitive.
+
+- **Task**: ``Task.apply`` now properly sets ``request.headers``
+  (Issue #1874).
+
+- **Worker**: Fixed ``UnicodeEncodeError`` occuring when worker is started
+  by `supervisord`.
+
+    Fix contributed by Codeb Fan.
+
+- **Beat**: No longer attempts to upgrade a newly created database file
+  (Issue #1923).
+
+- **Beat**: New setting :setting:``CELERYBEAT_SYNC_EVERY`` can be be used
+  to control file sync by specifying the number of tasks to send between
+  each sync.
+
+    Contributed by Chris Clark.
+
+- **Commands**: :program:`celery inspect memdump` no longer crashes
+  if the :mod:`psutil` module is not installed (Issue #1914).
+
+- **Worker**: Remote control commands now always accepts json serialized
+  messages (Issue #1870).
+
+- **Worker**: Gossip will now drop any task related events it receives
+  by mistake (Issue #1882).
+
+
+.. _version-3.1.9:
+
+3.1.9
+=====
+:release-date: 2014-02-10 06:43 P.M UTC
+:release-by: Ask Solem
+
+- **Requirements**:
+
+    - Now depends on :ref:`Kombu 3.0.12 <kombu:version-3.0.12>`.
+
+- **Prefork pool**: Better handling of exiting child processes.
+
+    Fix contributed by Ionel Cristian Mărieș.
+
+- **Prefork pool**: Now makes sure all file descriptors are removed
+  from the hub when a process is cleaned up.
+
+    Fix contributed by Ionel Cristian Mărieș.
+
+- **New Sphinx extension**: for autodoc documentation of tasks:
+  :mod:`celery.contrib.spinx` (Issue #1833).
+
+- **Django**: Now works with Django 1.7a1.
+
+- **Task**: Task.backend is now a property that forwards to ``app.backend``
+  if no custom backend has been specified for the task (Issue #1821).
+
+- **Generic init scripts**: Fixed bug in stop command.
+
+    Fix contributed by Rinat Shigapov.
+
+- **Generic init scripts**: Fixed compatibility with GNU :manpage:`stat`.
+
+    Fix contributed by Paul Kilgo.
+
+- **Generic init scripts**: Fixed compatibility with the minimal
+  :program:`dash` shell (Issue #1815).
+
+- **Commands**: The :program:`celery amqp basic.publish` command was not
+  working properly.
+
+    Fix contributed by Andrey Voronov.
+
+- **Commands**: Did no longer emit an error message if the pidfile exists
+  and the process is still alive (Issue #1855).
+
+- **Commands**: Better error message for missing arguments to preload
+  options (Issue #1860).
+
+- **Commands**: :program:`celery -h` did not work because of a bug in the
+  argument parser (Issue #1849).
+
+- **Worker**: Improved error message for message decoding errors.
+
+- **Time**: Now properly parses the `Z` timezone specifier in ISO 8601 date
+  strings.
+
+    Fix contributed by Martin Davidsson.
+
+- **Worker**: Now uses the *negotiated* heartbeat value to calculate
+  how often to run the heartbeat checks.
+
+- **Beat**: Fixed problem with beat hanging after the first schedule
+  iteration (Issue #1822).
+
+    Fix contributed by Roger Hu.
+
+- **Signals**: The header argument to :signal:`before_task_publish` is now
+  always a dictionary instance so that signal handlers can add headers.
+
+- **Worker**: A list of message headers is now included in message related
+  errors.
+
+.. _version-3.1.8:
+
+3.1.8
+=====
+:release-date: 2014-01-17 10:45 P.M UTC
+:release-by: Ask Solem
+
+- **Requirements**:
+
+    - Now depends on :ref:`Kombu 3.0.10 <kombu:version-3.0.10>`.
+
+    - Now depends on `billiard 3.3.0.14`_.
+
+.. _`billiard 3.3.0.14`:
+    https://github.com/celery/billiard/blob/master/CHANGES.txt
+
+- **Worker**: The event loop was not properly reinitialized at consumer restart
+  which would force the worker to continue with a closed ``epoll`` instance on
+  Linux, resulting in a crash.
+
+- **Events:** Fixed issue with both heartbeats and task events that could
+  result in the data not being kept in sorted order.
+
+    As a result this would force the worker to log "heartbeat missed"
+    events even though the remote node was sending heartbeats in a timely manner.
+
+- **Results:** The pickle serializer no longer converts group results to tuples,
+  and will keep the original type (*Issue #1750*).
+
+- **Results:** ``ResultSet.iterate`` is now pending deprecation.
+
+    The method will be deprecated in version 3.2 and removed in version 3.3.
+
+    Use ``result.get(callback=)`` (or ``result.iter_native()`` where available)
+    instead.
+
+- **Worker**\|eventlet/gevent: A regression caused ``Ctrl+C`` to be ineffective
+  for shutdown.
+
+- **Redis result backend:** Now using a pipeline to store state changes
+  for improved performance.
+
+    Contributed by Pepijn de Vos.
+
+- **Redis result backend:** Will now retry storing the result if disconnected.
+
+- **Worker**\|gossip: Fixed attribute error occurring when another node leaves.
+
+    Fix contributed by Brodie Rao.
+
+- **Generic init scripts:** Now runs a check at startup to verify
+  that any configuration scripts are owned by root and that they
+  are not world/group writeable.
+
+    The init script configuration is a shell script executed by root,
+    so this is a preventive measure to ensure that users do not
+    leave this file vulnerable to changes by unprivileged users.
+
+    .. note::
+
+        Note that upgrading celery will not update the init scripts,
+        instead you need to manually copy the improved versions from the
+        source distribution:
+        https://github.com/celery/celery/tree/3.1/extra/generic-init.d
+
+- **Commands**: The :program:`celery purge` command now warns that the operation
+  will delete all tasks and prompts the user for confirmation.
+
+    A new :option:`-f` was added that can be used to disable
+    interactive mode.
+
+- **Task**: ``.retry()`` did not raise the value provided in the ``exc`` argument
+  when called outside of an error context (*Issue #1755*).
+
+- **Commands:** The :program:`celery multi` command did not forward command
+  line configuration to the target workers.
+
+    The change means that multi will forward the special ``--`` argument and
+    configuration content at the end of the arguments line to the specified
+    workers.
+
+    Example using command-line configuration to set a broker heartbeat
+    from :program:`celery multi`:
+
+    .. code-block:: bash
+
+        $ celery multi start 1 -c3 -- broker.heartbeat=30
+
+    Fix contributed by Antoine Legrand.
+
+- **Canvas:** ``chain.apply_async()`` now properly forwards execution options.
+
+    Fix contributed by Konstantin Podshumok.
+
+- **Redis result backend:** Now takes ``connection_pool`` argument that can be
+  used to change the connection pool class/constructor.
+
+- **Worker:** Now truncates very long arguments and keyword arguments logged by
+  the pool at debug severity.
+
+- **Worker:** The worker now closes all open files on :sig:`SIGHUP` (regression)
+  (*Issue #1768*).
+
+    Fix contributed by Brodie Rao
+
+- **Worker:** Will no longer accept remote control commands while the
+  worker startup phase is incomplete (*Issue #1741*).
+
+- **Commands:** The output of the event dump utility
+  (:program:`celery events -d`) can now be piped into other commands.
+
+- **Documentation:** The RabbitMQ installation instructions for OS X was
+  updated to use modern homebrew practices.
+
+    Contributed by Jon Chen.
+
+- **Commands:** The :program:`celery inspect conf` utility now works.
+
+- **Commands:** The :option:`-no-color` argument was not respected by
+  all commands (*Issue #1799*).
+
+- **App:** Fixed rare bug with ``autodiscover_tasks()`` (*Issue #1797*).
+
+- **Distribution:** The sphinx docs will now always add the parent directory
+  to path so that the current celery source code is used as a basis for
+  API documentation (*Issue #1782*).
+
+- **Documentation:** Supervisord examples contained an extraneous '-' in a
+  `--logfile` argument example.
+
+    Fix contributed by Mohammad Almeer.
+
+.. _version-3.1.7:
+
+3.1.7
+=====
+:release-date: 2013-12-17 06:00 P.M UTC
+:release-by: Ask Solem
+
+.. _v317-important:
+
+Important Notes
+---------------
+
+Init script security improvements
+---------------------------------
+
+Where the generic init scripts (for ``celeryd``, and ``celerybeat``) before
+delegated the responsibility of dropping privileges to the target application,
+it will now use ``su`` instead, so that the Python program is not trusted
+with superuser privileges.
+
+This is not in reaction to any known exploit, but it will
+limit the possibility of a privilege escalation bug being abused in the
+future.
+
+You have to upgrade the init scripts manually from this directory:
+https://github.com/celery/celery/tree/3.1/extra/generic-init.d
+
+AMQP result backend
+~~~~~~~~~~~~~~~~~~~
+
+The 3.1 release accidentally left the amqp backend configured to be
+non-persistent by default.
+
+Upgrading from 3.0 would give a "not equivalent" error when attempting to
+set or retrieve results for a task.  That is unless you manually set the
+persistence setting::
+
+    CELERY_RESULT_PERSISTENT = True
+
+This version restores the previous value so if you already forced
+the upgrade by removing the existing exchange you must either
+keep the configuration by setting ``CELERY_RESULT_PERSISTENT = False``
+or delete the ``celeryresults`` exchange again.
+
+Synchronous subtasks
+~~~~~~~~~~~~~~~~~~~~
+
+Tasks waiting for the result of a subtask will now emit
+a :exc:`RuntimeWarning` warning when using the prefork pool,
+and in 3.2 this will result in an exception being raised.
+
+It's not legal for tasks to block by waiting for subtasks
+as this is likely to lead to resource starvation and eventually
+deadlock when using the prefork pool (see also :ref:`task-synchronous-subtasks`).
+
+If you really know what you are doing you can avoid the warning (and
+the future exception being raised) by moving the operation in a whitelist
+block:
+
+.. code-block:: python
+
+    from celery.result import allow_join_result
+
+    @app.task
+    def misbehaving():
+        result = other_task.delay()
+        with allow_join_result():
+            result.get()
+
+Note also that if you wait for the result of a subtask in any form
+when using the prefork pool you must also disable the pool prefetching
+behavior with the worker :ref:`-Ofair option <prefork-pool-prefetch>`.
+
+.. _v317-fixes:
+
+Fixes
+-----
+
+- Now depends on :ref:`Kombu 3.0.8 <kombu:version-3.0.8>`.
+
+- Now depends on :mod:`billiard` 3.3.0.13
+
+- Events: Fixed compatibility with non-standard json libraries
+  that sends float as :class:`decimal.Decimal` (Issue #1731)
+
+- Events: State worker objects now always defines attributes:
+  ``active``, ``processed``, ``loadavg``, ``sw_ident``, ``sw_ver``
+  and ``sw_sys``.
+
+- Worker: Now keeps count of the total number of tasks processed,
+  not just by type (``all_active_count``).
+
+- Init scripts:  Fixed problem with reading configuration file
+  when the init script is symlinked to a runlevel (e.g. ``S02celeryd``).
+  (Issue #1740).
+
+    This also removed a rarely used feature where you can symlink the script
+    to provide alternative configurations.  You instead copy the script
+    and give it a new name, but perhaps a better solution is to provide
+    arguments to ``CELERYD_OPTS`` to separate them:
+
+    .. code-block:: bash
+
+        CELERYD_NODES="X1 X2 Y1 Y2"
+        CELERYD_OPTS="-A:X1 x -A:X2 x -A:Y1 y -A:Y2 y"
+
+- Fallback chord unlock task is now always called after the chord header
+  (Issue #1700).
+
+    This means that the unlock task will not be started if there's
+    an error sending the header.
+
+- Celery command: Fixed problem with arguments for some control commands.
+
+    Fix contributed by Konstantin Podshumok.
+
+- Fixed bug in ``utcoffset`` where the offset when in DST would be
+  completely wrong (Issue #1743).
+
+- Worker: Errors occurring while attempting to serialize the result of a
+  task will now cause the task to be marked with failure and a
+  :class:`kombu.exceptions.EncodingError` error.
+
+    Fix contributed by Ionel Cristian Mărieș.
+
+- Worker with ``-B`` argument did not properly shut down the beat instance.
+
+- Worker: The ``%n`` and ``%h`` formats are now also supported by the
+  :option:`--logfile`, :option:`--pidfile` and :option:`--statedb` arguments.
+
+    Example:
+
+    .. code-block:: bash
+
+        $ celery -A proj worker -n foo@%h --logfile=%n.log --statedb=%n.db
+
+- Redis/Cache result backends: Will now timeout if keys evicted while trying
+  to join a chord.
+
+- The fallbock unlock chord task now raises :exc:`Retry` so that the
+  retry even is properly logged by the worker.
+
+- Multi: Will no longer apply Eventlet/gevent monkey patches (Issue #1717).
+
+- Redis result backend: Now supports UNIX sockets.
+
+    Like the Redis broker transport the result backend now also supports
+    using ``redis+socket:///tmp/redis.sock`` URLs.
+
+    Contributed by Alcides Viamontes Esquivel.
+
+- Events: Events sent by clients was mistaken for worker related events
+  (Issue #1714).
+
+    For ``events.State`` the tasks now have a ``Task.client`` attribute
+    that is set when a ``task-sent`` event is being received.
+
+    Also, a clients logical clock is not in sync with the cluster so
+    they live in a "time bubble".  So for this reason monitors will no
+    longer attempt to merge with the clock of an event sent by a client,
+    instead it will fake the value by using the current clock with
+    a skew of -1.
+
+- Prefork pool: The method used to find terminated processes was flawed
+  in that it did not also take into account missing popen objects.
+
+- Canvas: ``group`` and ``chord`` now works with anon signatures as long
+  as the group/chord object is associated with an app instance (Issue #1744).
+
+    You can pass the app by using ``group(..., app=app)``.
+
+.. _version-3.1.6:
+
+3.1.6
+=====
+:release-date: 2013-12-02 06:00 P.M UTC
+:release-by: Ask Solem
+
+- Now depends on :mod:`billiard` 3.3.0.10.
+
+- Now depends on :ref:`Kombu 3.0.7 <kombu:version-3.0.7>`.
+
+- Fixed problem where Mingle caused the worker to hang at startup
+  (Issue #1686).
+
+- Beat: Would attempt to drop privileges twice (Issue #1708).
+
+- Windows: Fixed error with ``geteuid`` not being available (Issue #1676).
+
+- Tasks can now provide a list of expected error classes (Issue #1682).
+
+    The list should only include errors that the task is expected to raise
+    during normal operation::
+
+        @task(throws=(KeyError, HttpNotFound))
+
+    What happens when an exceptions is raised depends on the type of error:
+
+    - Expected errors (included in ``Task.throws``)
+
+        Will be logged using severity ``INFO``, and traceback is excluded.
+
+    - Unexpected errors
+
+        Will be logged using severity ``ERROR``, with traceback included.
+
+- Cache result backend now compatible with Python 3 (Issue #1697).
+
+- CentOS init script: Now compatible with sys-v style init symlinks.
+
+    Fix contributed by Jonathan Jordan.
+
+- Events: Fixed problem when task name is not defined (Issue #1710).
+
+    Fix contributed by Mher Movsisyan.
+
+- Task: Fixed unbound local errors (Issue #1684).
+
+    Fix contributed by Markus Ullmann.
+
+- Canvas: Now unrolls groups with only one task (optimization) (Issue #1656).
+
+- Task: Fixed problem with eta and timezones.
+
+    Fix contributed by Alexander Koval.
+
+- Django: Worker now performs model validation (Issue #1681).
+
+- Task decorator now emits less confusing errors when used with
+  incorrect arguments (Issue #1692).
+
+- Task: New method ``Task.send_event`` can be used to send custom events
+  to Flower and other monitors.
+
+- Fixed a compatibility issue with non-abstract task classes
+
+- Events from clients now uses new node name format (``gen<pid>@<hostname>``).
+
+- Fixed rare bug with Callable not being defined at interpreter shutdown
+  (Issue #1678).
+
+    Fix contributed by Nick Johnson.
+
+- Fixed Python 2.6 compatibility (Issue #1679).
+
+.. _version-3.1.5:
+
+3.1.5
+=====
+:release-date: 2013-11-21 06:20 P.M UTC
+:release-by: Ask Solem
+
+- Now depends on :ref:`Kombu 3.0.6 <kombu:version-3.0.6>`.
+
+- Now depends on :mod:`billiard` 3.3.0.8
+
+- App: ``config_from_object`` is now lazy (Issue #1665).
+
+- App: ``autodiscover_tasks`` is now lazy.
+
+    Django users should now wrap access to the settings object
+    in a lambda::
+
+        app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
+
+    this ensures that the settings object is not prepared
+    prematurely.
+
+- Fixed regression for ``--app`` argument experienced by
+  some users (Issue #1653).
+
+- Worker: Now respects the ``--uid`` and ``--gid`` arguments
+  even if ``--detach`` is not enabled.
+
+- Beat: Now respects the ``--uid`` and ``--gid`` arguments
+  even if ``--detach`` is not enabled.
+
+- Python 3: Fixed unorderable error occuring with the worker ``-B``
+  argument enabled.
+
+- ``celery.VERSION`` is now a named tuple.
+
+- ``maybe_signature(list)`` is now applied recursively (Issue #1645).
+
+- ``celery shell`` command: Fixed ``IPython.frontend`` deprecation warning.
+
+- The default app no longer includes the builtin fixups.
+
+    This fixes a bug where ``celery multi`` would attempt
+    to load the Django settings module before entering
+    the target working directory.
+
+- The Django daemonization tutorial was changed.
+
+    Users no longer have to explicitly export ``DJANGO_SETTINGS_MODULE``
+    in :file:`/etc/default/celeryd` when the new project layout is used.
+
+- Redis result backend: expiry value can now be 0 (Issue #1661).
+
+- Censoring settings now accounts for non-string keys (Issue #1663).
+
+- App: New ``autofinalize`` option.
+
+    Apps are automatically finalized when the task registry is accessed.
+    You can now disable this behavior so that an exception is raised
+    instead.
+
+    Example:
+
+    .. code-block:: python
+
+        app = Celery(autofinalize=False)
+
+        # raises RuntimeError
+        tasks = app.tasks
+
+        @app.task
+        def add(x, y):
+            return x + y
+
+        # raises RuntimeError
+        add.delay(2, 2)
+
+        app.finalize()
+        # no longer raises:
+        tasks = app.tasks
+        add.delay(2, 2)
+
+- The worker did not send monitoring events during shutdown.
+
+- Worker: Mingle and gossip is now automatically disabled when
+  used with an unsupported transport (Issue #1664).
+
+- ``celery`` command:  Preload options now supports
+  the rare ``--opt value`` format (Issue #1668).
+
+- ``celery`` command: Accidentally removed options
+  appearing before the subcommand, these are now moved to the end
+  instead.
+
+- Worker now properly responds to ``inspect stats`` commands
+  even if received before startup is complete (Issue #1659).
+
+- :signal:`task_postrun` is now sent within a finally block, to make
+  sure the signal is always sent.
+
+- Beat: Fixed syntax error in string formatting.
+
+    Contributed by nadad.
+
+- Fixed typos in the documentation.
+
+    Fixes contributed by Loic Bistuer, sunfinite.
+
+- Nested chains now works properly when constructed using the
+  ``chain`` type instead of the ``|`` operator (Issue #1656).
+
+.. _version-3.1.4:
+
+3.1.4
+=====
+:release-date: 2013-11-15 11:40 P.M UTC
+:release-by: Ask Solem
+
+- Now depends on :ref:`Kombu 3.0.5 <kombu:version-3.0.5>`.
+
+- Now depends on :mod:`billiard` 3.3.0.7
+
+- Worker accidentally set a default socket timeout of 5 seconds.
+
+- Django: Fixup now sets the default app so that threads will use
+  the same app instance (e.g. for manage.py runserver).
+
+- Worker: Fixed Unicode error crash at startup experienced by some users.
+
+- Calling ``.apply_async`` on an empty chain now works again (Issue #1650).
+
+- The ``celery multi show`` command now generates the same arguments
+  as the start command does.
+
+- The ``--app`` argument could end up using a module object instead
+  of an app instance (with a resulting crash).
+
+- Fixed a syntax error problem in the celerybeat init script.
+
+    Fix contributed by Vsevolod.
+
+- Tests now passing on PyPy 2.1 and 2.2.
+
+.. _version-3.1.3:
+
+3.1.3
+=====
+:release-date: 2013-11-13 00:55 A.M UTC
+:release-by: Ask Solem
+
+- Fixed compatibility problem with Python 2.7.0 - 2.7.5 (Issue #1637)
+
+    ``unpack_from`` started supporting ``memoryview`` arguments
+    in Python 2.7.6.
+
+- Worker: :option:`-B` argument accidentally closed files used
+  for logging.
+
+- Task decorated tasks now keep their docstring (Issue #1636)
+
+.. _version-3.1.2:
+
+3.1.2
+=====
+:release-date: 2013-11-12 08:00 P.M UTC
+:release-by: Ask Solem
+
+- Now depends on :mod:`billiard` 3.3.0.6
+
+- No longer needs the billiard C extension to be installed.
+
+- The worker silently ignored task errors.
+
+- Django: Fixed ``ImproperlyConfigured`` error raised
+  when no database backend specified.
+
+    Fix contributed by j0hnsmith
+
+- Prefork pool: Now using ``_multiprocessing.read`` with ``memoryview``
+  if available.
+
+- ``close_open_fds`` now uses ``os.closerange`` if available.
+
+- ``get_fdmax`` now takes value from ``sysconfig`` if possible.
+
+.. _version-3.1.1:
+
+3.1.1
+=====
+:release-date: 2013-11-11 06:30 P.M UTC
+:release-by: Ask Solem
+
+- Now depends on :mod:`billiard` 3.3.0.4.
+
+- Python 3: Fixed compatibility issues.
+
+- Windows:  Accidentally showed warning that the billiard C extension
+  was not installed (Issue #1630).
+
+- Django: Tutorial updated with a solution that sets a default
+  :envvar:`DJANGO_SETTINGS_MODULE` so that it doesn't have to be typed
+  in with the :program:`celery` command.
+
+    Also fixed typos in the tutorial, and added the settings
+    required to use the Django database backend.
+
+    Thanks to Chris Ward, orarbel.
+
+- Django: Fixed a problem when using the Django settings in Django 1.6.
+
+- Django: Fixup should not be applied if the django loader is active.
+
+- Worker:  Fixed attribute error for ``human_write_stats`` when using the
+  compatibility prefork pool implementation.
+
+- Worker: Fixed compatibility with billiard without C extension.
+
+- Inspect.conf: Now supports a ``with_defaults`` argument.
+
+- Group.restore: The backend argument was not respected.
+
+.. _version-3.1.0:
+
+3.1.0
+=======
+:release-date: 2013-11-09 11:00 P.M UTC
+:release-by: Ask Solem
+
+See :ref:`whatsnew-3.1`.

+ 1 - 0
docs/history/index.rst

@@ -13,6 +13,7 @@ version please visit :ref:`changelog`.
 .. toctree::
     :maxdepth: 2
 
+    changelog-3.1
     changelog-3.0
     changelog-2.5
     changelog-2.4