Browse Source

Improves whatsnew doc for 2.6

Ask Solem 13 years ago
parent
commit
2b638a3ff1
1 changed files with 176 additions and 0 deletions
  1. 176 0
      docs/whatsnew-2.6.rst

+ 176 - 0
docs/whatsnew-2.6.rst

@@ -52,6 +52,120 @@ for the no-execv patch to work.
 - `django-celery #122 <http://github.com/ask/django-celery/issues/122`
 - `django-celery #124 <http://github.com/ask/django-celery/issues/122`
 
+
+`group`/`chord`/`chain` are now subtasks
+----------------------------------------
+
+- The source code for these, including subtask, has been moved
+  to new module celery.canvas.
+
+- group is no longer an alias to TaskSet, but new alltogether,
+  since it was very difficult to migrate the TaskSet class to become
+  a subtask.
+
+- A new shortcut has been added to tasks::
+
+        >>> task.s(arg1, arg2, kw=1)
+
+    as a shortcut to::
+
+        >>> task.subtask((arg1, arg2), {"kw": 1})
+
+- Tasks can be chained by using the ``|`` operator::
+
+        >>> (add.s(2, 2), pow.s(2)).apply_async()
+
+- Subtasks can be "evaluated" using the ``~`` operator::
+
+        >>> ~add.s(2, 2)
+        4
+
+        >>> ~(add.s(2, 2) | pow.s(2))
+
+    is the same as::
+
+        >>> chain(add.s(2, 2), pow.s(2)).apply_async().get()
+
+- A new subtask_type key has been added to the subtask dicts
+
+    This can be the string "chord", "group", "chain", "chunks",
+    "xmap", or "xstarmap".
+
+- maybe_subtask now uses subtask_type to reconstruct
+  the object, to be used when using non-pickle serializers.
+
+- The logic for these operations have been moved to dedicated
+  tasks celery.chord, celery.chain and celery.group.
+
+- subtask no longer inherits from AttributeDict.
+
+    It's now a pure dict subclass with properties for attribute
+    access to the relevant keys.
+
+- The repr's now outputs how the sequence would like imperatively::
+
+        >>> from celery import chord
+
+        >>> (chord([add.s(i, i) for i in xrange(10)], xsum.s())
+              | pow.s(2))
+        tasks.xsum([tasks.add(0, 0),
+                    tasks.add(1, 1),
+                    tasks.add(2, 2),
+                    tasks.add(3, 3),
+                    tasks.add(4, 4),
+                    tasks.add(5, 5),
+                    tasks.add(6, 6),
+                    tasks.add(7, 7),
+                    tasks.add(8, 8),
+                    tasks.add(9, 9)]) | tasks.pow(2)
+
+* New :setting:`CELERYD_WORKER_LOST_WAIT` to control the timeout in
+  seconds before :exc:`billiard.WorkerLostError` is raised
+  when a worker can not be signalled (Issue #595).
+
+    Contributed by Brendon Crawford.
+
+* App instance factory methods have been converted to be cached
+  descriptors that creates a new subclass on access.
+
+    This means that e.g. ``celery.Worker`` is an actual class
+    and will work as expected when::
+
+        class Worker(celery.Worker):
+            ...
+
+Logging Improvements
+--------------------
+
+Logging support now conforms better with best practices.
+
+- Classes used by the worker no longer uses app.get_default_logger, but uses
+  `celery.utils.log.get_logger` which simply gets the logger not setting the
+  level, and adds a NullHandler.
+
+- Loggers are no longer passed around, instead every module using logging
+  defines a module global logger that is used throughout.
+
+- All loggers inherit from a common logger called "celery".
+
+- Before task.get_logger would setup a new logger for every task,
+  and even set the loglevel.  This is no longer the case.
+
+    - Instead all task loggers now inherit from a common "celery.task" logger
+      that is set up when programs call `setup_logging_subsystem`.
+
+    - Instead of using LoggerAdapter to augment the formatter with
+      the task_id and task_name field, the task base logger now use
+      a special formatter adding these values at runtime from the
+      currently executing task.
+
+- Redirected output from stdout/stderr is now logged to a "celery.redirected"
+  logger.
+
+- In addition a few warnings.warn have been replaced with logger.warn.
+
+- Now avoids the 'no handlers for logger multiprocessing' warning
+
 Unorganized
 -----------
 
@@ -228,7 +342,63 @@ Unorganized
 * ``TasksetResult.taskset_id`` renamed to ``.id``
 
 
+* ``xmap(task, sequence)`` and ``xstarmap(task, sequence)`
+
+    Returns a list of the results applying the task to every item
+    in the sequence.
+
+    Example::
+
+        >>> from celery import xstarmap
+
+        >>> xstarmap(add, zip(range(10), range(10)).apply_async()
+        [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
+
+* ``chunks(task, sequence, chunksize)``
+
+* ``group.skew()``
+
+* 99% Coverage
+
+* :setting:`CELERY_QUEUES` can now be a list/tuple of :class:`~kombu.Queue`
+  instances.
+
+    Internally :attr:`@amqp.queues` is now a mapping of name/Queue instances,
+    instead of converting on the fly.
 
+* Can now specify connection for :class:`@control.inspect`.
+
+    .. code-block:: python
+
+        i = celery.control.inspect(connection=BrokerConnection("redis://"))
+        i.active_queues()
+
+* Module :mod:`celery.app.task` is now a module instead of a package.
+
+    The setup.py install script will try to remove the old package,
+    if that doesn't work for some reason you have to remove
+    it manually, you can do so by executing the command::
+
+        $ rm -r $(dirname $(python -c '
+            import celery;print(celery.__file__)'))/app/task/
+
+* :setting:`CELERY_FORCE_EXECV` is now enabled by default.
+
+    If the old behavior is wanted the setting can be set to False,
+    or the new :option:`--no-execv` to :program:`celeryd`.
+
+* Deprecated module ``celery.conf`` has been removed.
+
+* The :setting:`CELERY_TIMEZONE` now always require the :mod:`pytz`
+  library to be installed (exept if the timezone is set to `UTC`).
+
+* The Tokyo Tyrant backend has been removed and is no longer supported.
+
+* Now uses :func:`~kombu.common.maybe_declare` to cache queue declarations.
+
+* There is no longer a global default for the
+  :setting:`CELERYBEAT_MAX_LOOP_INTERVAL` setting, it is instead
+  set by individual schedulers.
 
 Internals
 ---------
@@ -253,6 +423,12 @@ Internals
 
 * Renamed module ``celery.abstract`` -> :mod:`celery.worker.abstract`.
 
+* Command-line docs are now parsed from the module docstrings.
+
+* Test suite directory has been reorganized.
+
+* :program:`setup.py` now reads docs from the :file:`requirements/` directory.
+
 .. _v260-deprecations:
 
 Deprecations