Browse Source

Updated Changelog

Ask Solem 14 years ago
parent
commit
de40ff499e
1 changed files with 256 additions and 62 deletions
  1. 256 62
      Changelog

+ 256 - 62
Changelog

@@ -25,7 +25,7 @@
 
 
 .. _v210-important:
 .. _v210-important:
 
 
-Important notes
+Important Notes
 ---------------
 ---------------
 
 
 * Celery is now following the versioning semantics defined by `semver`_.
 * Celery is now following the versioning semantics defined by `semver`_.
@@ -41,11 +41,27 @@ Important notes
 .. _`semver`: http://semver.org
 .. _`semver`: http://semver.org
 .. _`Wiki: Release Cycle`: http://wiki.github.com/ask/celery/release-cycle.
 .. _`Wiki: Release Cycle`: http://wiki.github.com/ask/celery/release-cycle.
 
 
+* Now depends on Carrot 0.10.6.
+
+* No longer depends on SQLAlchemy, this needs to be installed separately
+  if the database backend is used (does not apply to users of
+  ``django-celery``).
+
 .. _v210-news:
 .. _v210-news:
 
 
 News
 News
 ----
 ----
 
 
+* Added support for expiration of AMQP results (requires RabbitMQ 2.1.0)
+
+    The new configuration option ``CELERY_AMQP_TASK_RESULT_EXPIRES`` sets
+    the expiry time in seconds (can be int or float):
+
+    .. code-block:: python
+
+        CELERY_AMQP_TASK_RESULT_EXPIRES = 30 * 60  # 30 mins
+        CELERY_AMQP_TASK_RESULT_EXPIRES = 0.80     # 800 ms
+
 * celeryev: Event Snapshots
 * celeryev: Event Snapshots
 
 
     If enabled, celeryd can send messages every time something
     If enabled, celeryd can send messages every time something
@@ -112,6 +128,41 @@ News
     It deletes successful tasks after 1 day, failed tasks after 3 days,
     It deletes successful tasks after 1 day, failed tasks after 3 days,
     and tasks in other states after 5 days.
     and tasks in other states after 5 days.
 
 
+.. seealso::
+
+    :ref:`monitoring-django-admin` and :ref:`monitoring-snapshots`.
+
+
+* celeryd: Now emits a warning if there is already a worker node using the same
+  name running on the current virtual host.
+
+* :func:`celery.task.control.broadcast`: Added callback argument, this can be
+  used to process replies immediately as they arrive.
+
+* New remote control command: ``diagnose``.
+
+    Verifies that the pool workers are able to accept and perform tasks.
+
+    .. warning::
+        This is only reliable as long as the worker node is not
+        processing tasks.
+
+* celeryctl: New command-line utility to manage and inspect worker nodes,
+  and also apply tasks and inspect the results of tasks.
+
+    .. seealso::
+        The :ref:`monitoring-celeryctl` section in the :ref:`guide`.
+
+    Some examples::
+
+        $ celeryctl apply tasks.add -a '[2, 2]' --countdown=10
+
+        $ celeryctl inspect active
+        $ celeryctl inspect registered_tasks
+        $ celeryctl inspect scheduled
+        $ celeryctl inspect --help
+        $ celeryctl apply --help
+
 * Added the ability to set an expiry date and time for tasks.
 * Added the ability to set an expiry date and time for tasks.
 
 
     Example::
     Example::
@@ -168,6 +219,112 @@ News
             stdouts = logging.getLogger("mystdoutslogger")
             stdouts = logging.getLogger("mystdoutslogger")
             log.redirect_stdouts_to_logger(stdouts, loglevel=logging.WARNING)
             log.redirect_stdouts_to_logger(stdouts, loglevel=logging.WARNING)
 
 
+* celeryd: Added command-line option ``-I|--include``:
+  Additional (task) modules to be imported
+
+* :func:`celery.messaging.establish_connection`: Ability to override defaults
+  used using kwarg "defaults".
+
+* celeryd: Now uses ``multiprocessing.freeze_support()`` so it should work
+  with py2exe and similar tools.
+
+* celeryd: Now includes more metadata for the STARTED state: pid and
+  hostname of the worker that started the task.
+
+    See issue #181
+
+* subtask: Merge addititional keyword args to ``subtask()`` into task kwargs.
+
+    e.g:
+
+        >>> s = subtask((1, 2), {"foo": "bar"}, baz=1)
+        >>> s.args
+        (1, 2)
+        >>> s.kwargs
+        {"foo": "bar", "baz": 1}
+
+    See issue #182.
+
+* AMQP result backend: Sending of results are now retried if the connection
+  is down.
+
+* AMQP result backend: ``result.get()``: Wait for next state if state is not
+  in :data:`~celery.states.READY_STATES`.
+
+* TaskSetResult now supports ``__getitem__``
+
+    ::
+
+        >>> res = TaskSet(tasks).apply_async()
+        >>> res[0].get()
+
+
+
+* Added ``Task.send_error_emails`` + ``Task.error_whitelist``, so these can
+  be configured per task instead of just globally
+
+* Added ``Task.store_errors_even_if_ignored``, so it can be changed per Task,
+  not just globally.
+
+* The crontab schedule no longer wakes up every second, but implements
+  ``remaining_estimate``.
+
+* celeryd:  Store FAILURE result if the ``WorkerLostError`` exception occurs
+  (worker process disappeared).
+
+* celeryd: Store FAILURE result if one of the ``*TimeLimitExceeded``
+  exceptions occurs.
+
+* Refactored the periodic task responsible for cleaning up results.
+
+    * The backend cleanup task is now only added to the schedule if
+        ``CELERY_TASK_RESULT_EXPIRES`` is set.
+
+    * If the schedule already contains a periodic task named
+      "celery.backend_cleanup" it won't change it, so the behavior of the
+      backend cleanup task can be easily changed.
+
+    * The task is now run by every day at 4:00 AM, instead of every day since
+      fist run (using crontab schedule instead of run_every)
+
+    * Renamed ``celery.task.builtins.DeleteExpiredTaskMetaTask``
+        -> :class:`celery.task.builtins.backend_cleanup`
+
+    * The task itself has been renamed from "celery.delete_expired_task_meta"
+      to "celery.backend_cleanup"
+
+    See issue #134.
+
+* Implemented ``AsyncResult.forget`` for sqla/cache/redis/tyrant backends.
+  (Forget and remove task result).
+
+    See issue #184.
+
+*    Added ``Task.update_state(task_id, state, meta)``.
+
+    as a shortcut to ``task.backend.store_result(task_id, meta, state)``.
+
+    The backend interface is "private" and the terminology outdated,
+    so better to move this to :class:`~celery.task.base.Task` so it can be
+    used.
+
+* timer2: Set ``self.running=False`` in
+  :meth:`~celery.utils.timer2.Timer.stop` so it won't try to join again on
+  subsequent calls to ``stop()``.
+
+* Log colors are now disabled by default on Windows.
+
+* ``celery.platform`` renamed to :mod:`celery.platforms`, so it doesn't
+  collide with the built-in :mod:`platform` module.
+
+* Exceptions occuring in Mediator+Pool callbacks are now catched and logged
+  instead of taking down the worker.
+
+* Redis result backend: Now supports result expiration using the Redis
+  ``EXPIRE`` command.
+
+* unittests: Don't leave threads running at teardown.
+
 * celeryd: Task results shown in logs are now truncated to 46 chars.
 * celeryd: Task results shown in logs are now truncated to 46 chars.
 
 
 * ``Task.__name__`` is now an alias to ``self.__class__.__name__``.
 * ``Task.__name__`` is now an alias to ``self.__class__.__name__``.
@@ -175,7 +332,7 @@ News
 
 
 * ``Task.retry``: Now raises :exc:`TypeError` if kwargs argument is empty.
 * ``Task.retry``: Now raises :exc:`TypeError` if kwargs argument is empty.
 
 
-    See http://github.com/ask/celery/issues/issue/164
+    See issue #164.
 
 
 * timedelta_seconds: Use ``timedelta.total_seconds`` if running on Python 2.7
 * timedelta_seconds: Use ``timedelta.total_seconds`` if running on Python 2.7
 
 
@@ -212,6 +369,16 @@ Fixes
 
 
    See http://github.com/ask/celery/issues/issue/179
    See http://github.com/ask/celery/issues/issue/179
 
 
+* Pool: Process timed out by TimeoutHandler must be joined by the Supervisor,
+  so don't remove it from self._pool
+
+    See issue #192.
+
+* TaskPublisher.delay_task now supports exchange argument, so exchange can be
+  overriden when sending tasks in bulk using the same publisher
+
+    See issue #187.
+
 * Compat ``LoggerAdapter`` implementation: Now works for Python 2.4.
 * Compat ``LoggerAdapter`` implementation: Now works for Python 2.4.
 
 
     Also added support for several new methods:
     Also added support for several new methods:
@@ -224,7 +391,17 @@ Fixes
 Documentation
 Documentation
 -------------
 -------------
 
 
-* tutorials/external moved to new section: "community"
+* Added User guide section: Monitoring
+
+* Added user guide section: Periodic Tasks
+
+    Moved from `getting-started/periodic-tasks` and updated.
+
+* tutorials/external moved to new section: "community".
+
+* References has been added to all sections in the documentation.
+
+    This makes it easier to link between documents.
 
 
 .. _version-2.0.3:
 .. _version-2.0.3:
 
 
@@ -254,7 +431,7 @@ Fixes
 * :class:`~celery.task.control.inspect`:
 * :class:`~celery.task.control.inspect`:
   ``registered_tasks`` was requesting an invalid command because of a typo.
   ``registered_tasks`` was requesting an invalid command because of a typo.
 
 
-    See http://github.com/ask/celery/issues/issue/170
+    See issue #170.
 
 
 * ``CELERY_ROUTES``: Values defined in the route should now have precedence
 * ``CELERY_ROUTES``: Values defined in the route should now have precedence
   over values defined in ``CELERY_QUEUES`` when merging the two.
   over values defined in ``CELERY_QUEUES`` when merging the two.
@@ -297,7 +474,7 @@ Fixes
 * celeryev: Curses monitor no longer crashes if the terminal window
 * celeryev: Curses monitor no longer crashes if the terminal window
   is resized.
   is resized.
 
 
-    See http://github.com/ask/celery/issues/issue/160
+    See issue #160.
 
 
 * celeryd: On OS X it is not possible to run ``os.exec*`` in a process
 * celeryd: On OS X it is not possible to run ``os.exec*`` in a process
   that is threaded.
   that is threaded.
@@ -305,26 +482,26 @@ Fixes
       This breaks the SIGHUP restart handler,
       This breaks the SIGHUP restart handler,
       and is now disabled on OS X, emitting a warning instead.
       and is now disabled on OS X, emitting a warning instead.
 
 
-    See http://github.com/ask/celery/issues/issue/152
+    See issue #152.
 
 
 * :mod:`celery.execute.trace`: Properly handle ``raise(str)``,
 * :mod:`celery.execute.trace`: Properly handle ``raise(str)``,
   which is still allowed in Python 2.4.
   which is still allowed in Python 2.4.
 
 
-    See http://github.com/ask/celery/issues/issue/175
+    See issue #175.
 
 
 * Using urllib2 in a periodic task on OS X crashed because
 * Using urllib2 in a periodic task on OS X crashed because
   of the proxy autodetection used in OS X.
   of the proxy autodetection used in OS X.
 
 
     This is now fixed by using a workaround.
     This is now fixed by using a workaround.
-    See http://github.com/ask/celery/issues/issue/143
+    See issue #143.
 
 
 * Debian init scripts: Commands should not run in a subshell
 * Debian init scripts: Commands should not run in a subshell
 
 
-    See http://github.com/ask/celery/issues/issue/163
+    See issue #163.
 
 
 * Debian init scripts: Use abspath for celeryd to allow stat
 * Debian init scripts: Use abspath for celeryd to allow stat
 
 
-    See http://github.com/ask/celery/issues/issue/162
+    See issue #162.
 
 
 .. _v203-documentation:
 .. _v203-documentation:
 
 
@@ -337,11 +514,11 @@ Documentation
 
 
 * Tasks Userguide: Added section on database transactions.
 * Tasks Userguide: Added section on database transactions.
 
 
-    See http://github.com/ask/celery/issues/issue/169
+    See issue #169.
 
 
 * Routing Userguide: Fixed typo ``"feed": -> {"queue": "feeds"}``.
 * Routing Userguide: Fixed typo ``"feed": -> {"queue": "feeds"}``.
 
 
-    See http://github.com/ask/celery/issues/issue/169
+    See issue #169.
 
 
 * Documented the default values for the ``CELERYD_CONCURRENCY``
 * Documented the default values for the ``CELERYD_CONCURRENCY``
   and ``CELERYD_PREFETCH_MULTIPLIER`` settings.
   and ``CELERYD_PREFETCH_MULTIPLIER`` settings.
@@ -370,7 +547,7 @@ Documentation
 * Routes: When using the dict route syntax, the exchange for a task
 * Routes: When using the dict route syntax, the exchange for a task
   could dissapear making the task unroutable.
   could dissapear making the task unroutable.
 
 
-    See http://github.com/ask/celery/issues/issue/158
+    See issue #158.
 
 
 * Test suite now passing on Python 2.4
 * Test suite now passing on Python 2.4
 
 
@@ -403,12 +580,12 @@ Documentation
 
 
 * celeryd: Now joins threads at shutdown.
 * celeryd: Now joins threads at shutdown.
 
 
-    See http://github.com/ask/celery/issues/issue/152
+    See issue #152.
 
 
 * Test teardown: Don't use atexit but nose's ``teardown()`` functionality
 * Test teardown: Don't use atexit but nose's ``teardown()`` functionality
   instead.
   instead.
 
 
-    See http://github.com/ask/celery/issues/issue/154
+    See issue #154.
 
 
 * Debian init script for celeryd: Stop now works correctly.
 * Debian init script for celeryd: Stop now works correctly.
 
 
@@ -420,7 +597,7 @@ Documentation
 
 
         CELERY_TASK_ERROR_WHITELIST = ('myapp.MalformedInputError')
         CELERY_TASK_ERROR_WHITELIST = ('myapp.MalformedInputError')
 
 
-    See http://github.com/ask/celery/issues/issue/153
+    See issue #153.
 
 
 * celeryd: Now handles overflow exceptions in ``time.mktime`` while parsing
 * celeryd: Now handles overflow exceptions in ``time.mktime`` while parsing
   the ETA field.
   the ETA field.
@@ -911,7 +1088,7 @@ News
     because it has applied prefetched tasks without having any pool
     because it has applied prefetched tasks without having any pool
     processes available to immediately accept them.
     processes available to immediately accept them.
 
 
-    See http://github.com/ask/celery/issues/closed#issue/122
+    See issue #122.
 
 
 * New built-in way to do task callbacks using
 * New built-in way to do task callbacks using
   :class:`~celery.task.sets.subtask`.
   :class:`~celery.task.sets.subtask`.
@@ -928,11 +1105,11 @@ News
 
 
 * TaskSet failed() result was incorrect.
 * TaskSet failed() result was incorrect.
 
 
-    See http://github.com/ask/celery/issues/closed#issue/132
+    See issue #132.
 
 
 * Now creates different loggers per task class.
 * Now creates different loggers per task class.
 
 
-    See http://github.com/ask/celery/issues/closed#issue/129
+    See issue #129.
 
 
 * Missing queue definitions are now created automatically.
 * Missing queue definitions are now created automatically.
 
 
@@ -1232,9 +1409,10 @@ Critical
 
 
     Fixed by making the pool worker processes ignore :const:`SIGINT`.
     Fixed by making the pool worker processes ignore :const:`SIGINT`.
 
 
-* Should not close the consumers before the pool is terminated, just cancel the consumers.
+* Should not close the consumers before the pool is terminated, just cancel
+  the consumers.
 
 
-    Issue #122. http://github.com/ask/celery/issues/issue/122
+    See issue #122.
 
 
 * Now depends on :mod:`billiard` >= 0.3.1
 * Now depends on :mod:`billiard` >= 0.3.1
 
 
@@ -1264,12 +1442,12 @@ Changes
 
 
 * :func:`celery.execute.apply`: Pass logfile/loglevel arguments as task kwargs.
 * :func:`celery.execute.apply`: Pass logfile/loglevel arguments as task kwargs.
 
 
-    Issue #110 http://github.com/ask/celery/issues/issue/110
+    See issue #110.
 
 
 * celery.execute.apply: Should return exception, not :class:`~celery.datastructures.ExceptionInfo`
 * celery.execute.apply: Should return exception, not :class:`~celery.datastructures.ExceptionInfo`
   on error.
   on error.
 
 
-    Issue #111 http://github.com/ask/celery/issues/issue/111
+    See issue #111.
 
 
 * Added new entries to the :doc:`FAQs <faq>`:
 * Added new entries to the :doc:`FAQs <faq>`:
 
 
@@ -1343,9 +1521,11 @@ News
     Late ack means the task messages will be acknowledged **after** the task
     Late ack means the task messages will be acknowledged **after** the task
     has been executed, not *just before*, which is the default behavior.
     has been executed, not *just before*, which is the default behavior.
 
 
-    Note that this means the tasks may be executed twice if the worker
-    crashes in the middle of their execution. Not acceptable for most
-    applications, but desirable for others.
+    .. note::
+
+        This means the tasks may be executed twice if the worker
+        crashes in mid-execution. Not acceptable for most
+        applications, but desirable for others.
 
 
 * Added crontab-like scheduling to periodic tasks.
 * Added crontab-like scheduling to periodic tasks.
 
 
@@ -1377,14 +1557,15 @@ News
         def every_hour():
         def every_hour():
             print("Runs every hour on the clock. e.g. 1:30, 2:30, 3:30 etc.")
             print("Runs every hour on the clock. e.g. 1:30, 2:30, 3:30 etc.")
 
 
-    Note that this a late addition. While we have unittests, due to the
-    nature of this feature we haven't been able to completely test this
-    in practice, so consider this experimental.
+    .. note::
+        This a late addition. While we have unittests, due to the
+        nature of this feature we haven't been able to completely test this
+        in practice, so consider this experimental.
 
 
 * ``TaskPool.apply_async``: Now supports the ``accept_callback`` argument.
 * ``TaskPool.apply_async``: Now supports the ``accept_callback`` argument.
 
 
 * ``apply_async``: Now raises :exc:`ValueError` if task args is not a list,
 * ``apply_async``: Now raises :exc:`ValueError` if task args is not a list,
-  or kwargs is not a tuple (http://github.com/ask/celery/issues/issue/95).
+  or kwargs is not a tuple (Issue #95).
 
 
 * ``Task.max_retries`` can now be ``None``, which means it will retry forever.
 * ``Task.max_retries`` can now be ``None``, which means it will retry forever.
 
 
@@ -1532,8 +1713,7 @@ Fixes
     the mediator thread could block shutdown (and potentially block other
     the mediator thread could block shutdown (and potentially block other
     jobs from coming in).
     jobs from coming in).
 
 
-* Remote rate limits was not properly applied
-  (http://github.com/ask/celery/issues/issue/98)
+* Remote rate limits was not properly applied (Issue #98).
 
 
 * Now handles exceptions with unicode messages correctly in
 * Now handles exceptions with unicode messages correctly in
   ``TaskRequest.on_failure``.
   ``TaskRequest.on_failure``.
@@ -1569,7 +1749,7 @@ Fixes
 
 
 * Unittests: Don't disable the django test database teardown,
 * Unittests: Don't disable the django test database teardown,
   instead fixed the underlying issue which was caused by modifications
   instead fixed the underlying issue which was caused by modifications
-  to the ``DATABASE_NAME`` setting (http://github.com/ask/celery/issues/82).
+  to the ``DATABASE_NAME`` setting (Issue #82).
 
 
 * Django Loader: New config ``CELERY_DB_REUSE_MAX`` (max number of tasks
 * Django Loader: New config ``CELERY_DB_REUSE_MAX`` (max number of tasks
   to reuse the same database connection)
   to reuse the same database connection)
@@ -1599,8 +1779,7 @@ Fixes
     Consider the competition for the first pool plug-in started!
     Consider the competition for the first pool plug-in started!
 
 
 
 
-* Debian init scripts: Use ``-a`` not ``&&``
-  (http://github.com/ask/celery/issues/82).
+* Debian init scripts: Use ``-a`` not ``&&`` (Issue #82).
 
 
 * Debian init scripts: Now always preserves ``$CELERYD_OPTS`` from the
 * Debian init scripts: Now always preserves ``$CELERYD_OPTS`` from the
   ``/etc/default/celeryd`` and ``/etc/default/celerybeat``.
   ``/etc/default/celeryd`` and ``/etc/default/celerybeat``.
@@ -1617,7 +1796,7 @@ Fixes
   when trying to log that a task had been revoked.
   when trying to log that a task had been revoked.
 
 
 * management.commands.camqadm: Fixed typo ``camqpadm`` -> ``camqadm``
 * management.commands.camqadm: Fixed typo ``camqpadm`` -> ``camqadm``
-  (http://github.com/ask/celery/issues/83).
+  (Issue #83).
 
 
 * PeriodicTask.delta_resolution: Was not working for days and hours, now fixed
 * PeriodicTask.delta_resolution: Was not working for days and hours, now fixed
   by rounding to the nearest day/hour.
   by rounding to the nearest day/hour.
@@ -1651,9 +1830,11 @@ Fixes
     apply to your use case, you should be able to set the prefetch multiplier
     apply to your use case, you should be able to set the prefetch multiplier
     to zero, without sacrificing performance.
     to zero, without sacrificing performance.
 
 
-    Please note that a patch to :mod:`multiprocessing` is currently being
-    worked on, this patch would enable us to use a better solution, and is
-    scheduled for inclusion in the ``2.0.0`` release.
+    .. note::
+
+        A patch to :mod:`multiprocessing` is currently being
+        worked on, this patch would enable us to use a better solution, and is
+        scheduled for inclusion in the ``2.0.0`` release.
 
 
 * celeryd now shutdowns cleanly when receving the ``TERM`` signal.
 * celeryd now shutdowns cleanly when receving the ``TERM`` signal.
 
 
@@ -1675,9 +1856,10 @@ Fixes
 
 
 * ``celeryd`` now works on Windows again.
 * ``celeryd`` now works on Windows again.
 
 
-    Note that if running with Django,
-    you can't use ``project.settings`` as the settings module name, but the
-    following should work::
+    .. warning::
+
+        If you're using Celery with Django, you can't use ``project.settings``
+        as the settings module name, but the following should work::
 
 
         $ python manage.py celeryd --settings=settings
         $ python manage.py celeryd --settings=settings
 
 
@@ -1866,7 +2048,9 @@ Backward incompatible changes
         def add(x, y):
         def add(x, y):
             return x + y
             return x + y
 
 
-    See the User Guide: :doc:`userguide/tasks` for more information.
+    .. seealso::
+
+        :ref:`guide-tasks` for more information about the task decorators.
 
 
 * The periodic task system has been rewritten to a centralized solution.
 * The periodic task system has been rewritten to a centralized solution.
 
 
@@ -2253,16 +2437,22 @@ Backward incompatible changes
 -----------------------------
 -----------------------------
 
 
 * Add traceback to result value on failure.
 * Add traceback to result value on failure.
-	**NOTE** If you use the database backend you have to re-create the
-	database table ``celery_taskmeta``.
-	
-	Contact the mailinglist or IRC channel listed in README for help
-	doing this.
+
+    .. note::
+
+        If you use the database backend you have to re-create the
+        database table ``celery_taskmeta``.
+
+        Contact the :ref:`mailing-list` or :ref:`irc-channel` channel
+        for help doing this.
 
 
 * Database tables are now only created if the database backend is used,
 * Database tables are now only created if the database backend is used,
-	so if you change back to the database backend at some point,
-	be sure to initialize tables (django: ``syncdb``, python: ``celeryinit``).
-	(Note: This is only the case when using Django 1.1 or higher)
+  so if you change back to the database backend at some point,
+  be sure to initialize tables (django: ``syncdb``, python: ``celeryinit``).
+
+  .. note::
+
+     This is only applies if using Django version 1.1 or higher.
 
 
 * Now depends on ``carrot`` version 0.6.0.
 * Now depends on ``carrot`` version 0.6.0.
 
 
@@ -2278,10 +2468,7 @@ Important changes
     This means celery is no longer Django specific.
     This means celery is no longer Django specific.
 
 
     For more information see the FAQ entry
     For more information see the FAQ entry
-    `Can I use celery without Django?`_.
-
-    . _`Can I use celery without Django?`:
-        http://ask.github.com/celery/faq.html#can-i-use-celery-without-django
+    :ref:`faq-is-celery-for-django-only`.
 
 
 * Celery now supports task retries.
 * Celery now supports task retries.
 
 
@@ -2295,7 +2482,7 @@ Important changes
     It uses messages to publish task return value and status. And it's
     It uses messages to publish task return value and status. And it's
     incredibly fast!
     incredibly fast!
 
 
-    See http://github.com/ask/celery/issues/closed#issue/6 for more info!
+    See issue #6 for more info!
 
 
 * AMQP QoS (prefetch count) implemented:
 * AMQP QoS (prefetch count) implemented:
 
 
@@ -2545,12 +2732,17 @@ News
   restarted if it crashes). To use this start celeryd with the
   restarted if it crashes). To use this start celeryd with the
   ``--supervised`` option (or alternatively ``-S``).
   ``--supervised`` option (or alternatively ``-S``).
 
 
-* views.apply: View applying a task. Example::
+* views.apply: View applying a task. Example
+
+    ::
+
+        http://e.com/celery/apply/task_name/arg1/arg2//?kwarg1=a&kwarg2=b
 
 
-    http://e.com/celery/apply/task_name/arg1/arg2//?kwarg1=a&kwarg2=b
 
 
-  **NOTE** Use with caution, preferably not make this publicly
-  accessible without ensuring your code is safe!
+    .. warning::
+
+        Use with caution! Do not expose this URL to the public
+        without first ensuring that your code is safe!
 
 
 * Refactored ``celery.task``. It's now split into three modules:
 * Refactored ``celery.task``. It's now split into three modules:
 
 
@@ -2672,8 +2864,10 @@ News
 =====
 =====
 :release-date: 2009-06-08 12:41 P.M CET
 :release-date: 2009-06-08 12:41 P.M CET
 
 
-**NOTE** This is a development version, for the stable release, please
-see versions 0.2.x.
+.. warning::
+
+    This is a development version, for the stable release, please
+    see versions 0.2.x.
 
 
 **VERY IMPORTANT:** Pickle is now the encoder used for serializing task
 **VERY IMPORTANT:** Pickle is now the encoder used for serializing task
 arguments, so be sure to flush your task queue before you upgrade.
 arguments, so be sure to flush your task queue before you upgrade.