|
@@ -5,6 +5,387 @@
|
|
|
.. contents::
|
|
|
:local:
|
|
|
|
|
|
+.. _version-2.4.1:
|
|
|
+
|
|
|
+2.4.1
|
|
|
+=====
|
|
|
+:release-date: 2011-11-07 06:00 P.M GMT
|
|
|
+:by: Ask Solem
|
|
|
+
|
|
|
+* celeryctl inspect commands was missing output.
|
|
|
+
|
|
|
+* processes pool: Decrease polling interval for less idle CPU usage.
|
|
|
+
|
|
|
+* processes pool: MaybeEncodingError was not wrapped in ExceptionInfo
|
|
|
+ (Issue #524).
|
|
|
+
|
|
|
+* celeryd: would silence errors occuring after task consumer started.
|
|
|
+
|
|
|
+* logging: Fixed a bug where unicode in stdout redirected log messages
|
|
|
+ couldn't be written (Issue #522).
|
|
|
+
|
|
|
+.. _version-2.4.0:
|
|
|
+
|
|
|
+2.4.0
|
|
|
+=====
|
|
|
+:release-date: 2011-11-04 04:00 P.M GMT
|
|
|
+:by: Ask Solem
|
|
|
+
|
|
|
+.. _v240-important:
|
|
|
+
|
|
|
+Important Notes
|
|
|
+---------------
|
|
|
+
|
|
|
+* Now supports Python 3.
|
|
|
+
|
|
|
+* Fixed deadlock in worker process handling (Issue #496).
|
|
|
+
|
|
|
+ A deadlock could occur after spawning new child processes because
|
|
|
+ the logging library's mutex was not properly reset after fork.
|
|
|
+
|
|
|
+ The symptoms of this bug affecting would be that the worker simply
|
|
|
+ stops processing tasks, as none of the workers child processes
|
|
|
+ are functioning. There was a greater chance of this bug occurring
|
|
|
+ with ``maxtasksperchild`` or a time-limit enabled.
|
|
|
+
|
|
|
+ This is a workaround for http://bugs.python.org/issue6721#msg140215.
|
|
|
+
|
|
|
+ Be aware that while this fixes the logging library lock,
|
|
|
+ there could still be other locks initialized in the parent
|
|
|
+ process, introduced by custom code.
|
|
|
+
|
|
|
+ Fix contributed by Harm Verhagen.
|
|
|
+
|
|
|
+* AMQP Result backend: Now expires results by default.
|
|
|
+
|
|
|
+ The default expiration value is now taken from the
|
|
|
+ :setting:`CELERY_TASK_RESULT_EXPIRES` setting.
|
|
|
+
|
|
|
+ The old :setting:`CELERY_AMQP_TASK_RESULT_EXPIRES` setting has been
|
|
|
+ deprecated and will be removed in version 3.0.
|
|
|
+
|
|
|
+ Note that this means that the result backend requires RabbitMQ 1.1.0 or
|
|
|
+ higher, and that you have to disable expiration if you are running
|
|
|
+ with an older version. You can do so by disabling the
|
|
|
+ :setting:`CELERY_TASK_RESULT_EXPIRES` setting::
|
|
|
+
|
|
|
+ CELERY_TASK_RESULT_EXPIRES = None
|
|
|
+
|
|
|
+* Eventlet: Fixed problem with shutdown (Issue #457).
|
|
|
+
|
|
|
+* Broker transports can be now be specified using URLs
|
|
|
+
|
|
|
+ The broker can now be specified as an URL instead.
|
|
|
+ This URL must have the format::
|
|
|
+
|
|
|
+ transport://user:password@hostname:port/virtual_host
|
|
|
+
|
|
|
+ for example the default broker is written as::
|
|
|
+
|
|
|
+ amqp://guest:guest@localhost:5672//
|
|
|
+
|
|
|
+ The scheme is required, so that the host is identified
|
|
|
+ as an URL and not just a host name.
|
|
|
+ User, password, port and virtual_host are optional and
|
|
|
+ defaults to the particular transports default value.
|
|
|
+
|
|
|
+ .. note::
|
|
|
+
|
|
|
+ Note that the path component (virtual_host) always starts with a
|
|
|
+ forward-slash. This is necessary to distinguish between the virtual
|
|
|
+ host ``''`` (empty) and ``'/'``, which are both acceptable virtual
|
|
|
+ host names.
|
|
|
+
|
|
|
+ A virtual host of ``'/'`` becomes:
|
|
|
+
|
|
|
+ amqp://guest:guest@localhost:5672//
|
|
|
+
|
|
|
+ and a virtual host of ``''`` (empty) becomes::
|
|
|
+
|
|
|
+ amqp://guest:guest@localhost:5672/
|
|
|
+
|
|
|
+ So the leading slash in the path component is **always required**.
|
|
|
+
|
|
|
+ In addition the :setting:`BROKER_URL` setting has been added as an alias
|
|
|
+ to ``BROKER_HOST``. Any broker setting specified in both the URL and in
|
|
|
+ the configuration will be ignored, if a setting is not provided in the URL
|
|
|
+ then the value from the configuration will be used as default.
|
|
|
+
|
|
|
+ Also, programs now support the :option:`-b|--broker` option to specify
|
|
|
+ a broker URL on the command line::
|
|
|
+
|
|
|
+ $ celeryd -b redis://localhost
|
|
|
+
|
|
|
+ $ celeryctl -b amqp://guest:guest@localhost//e
|
|
|
+
|
|
|
+ The environment variable :envvar:`CELERY_BROKER_URL` can also be used to
|
|
|
+ easily override the default broker used.
|
|
|
+
|
|
|
+* The deprecated :func:`celery.loaders.setup_loader` function has been removed.
|
|
|
+
|
|
|
+* The :setting:`CELERY_TASK_ERROR_WHITELIST` setting has been replaced
|
|
|
+ by a more flexible approach (Issue #447).
|
|
|
+
|
|
|
+ The error mail sending logic is now available as ``Task.ErrorMail``,
|
|
|
+ with the implementation (for reference) in :mod:`celery.utils.mail`.
|
|
|
+
|
|
|
+ The error mail class can be sub-classed to gain complete control
|
|
|
+ of when error messages are sent, thus removing the need for a separate
|
|
|
+ white-list setting.
|
|
|
+
|
|
|
+ The :setting:`CELERY_TASK_ERROR_WHITELIST` setting has been deprecated,
|
|
|
+ and will be removed completely in version 3.0.
|
|
|
+
|
|
|
+* Additional Deprecations
|
|
|
+
|
|
|
+ The following functions has been deprecated and is scheduled for removal in
|
|
|
+ version 3.0:
|
|
|
+
|
|
|
+ ===================================== ===================================
|
|
|
+ **Old function** **Alternative**
|
|
|
+ ===================================== ===================================
|
|
|
+ `celery.loaders.current_loader` `celery.current_app.loader`
|
|
|
+ `celery.loaders.load_settings` `celery.current_app.conf`
|
|
|
+ `celery.execute.apply` `Task.apply`
|
|
|
+ `celery.execute.apply_async` `Task.apply_async`
|
|
|
+ `celery.execute.delay_task` `celery.execute.send_task`
|
|
|
+ ===================================== ===================================
|
|
|
+
|
|
|
+ The following settings has been deprecated and is scheduled for removal
|
|
|
+ in version 3.0:
|
|
|
+
|
|
|
+ ===================================== ===================================
|
|
|
+ **Old setting** **Alternative**
|
|
|
+ ===================================== ===================================
|
|
|
+ `CELERYD_LOG_LEVEL` ``celeryd --loglevel=``
|
|
|
+ `CELERYD_LOG_FILE` ``celeryd --logfile=``
|
|
|
+ `CELERYBEAT_LOG_LEVEL` ``celerybeat --loglevel=``
|
|
|
+ `CELERYBEAT_LOG_FILE` ``celerybeat --logfile=``
|
|
|
+ `CELERYMON_LOG_LEVEL` ``celerymon --loglevel=``
|
|
|
+ `CELERYMON_LOG_FILE` ``celerymon --logfile=``
|
|
|
+ ===================================== ===================================
|
|
|
+
|
|
|
+.. _v240-news:
|
|
|
+
|
|
|
+News
|
|
|
+----
|
|
|
+
|
|
|
+* No longer depends on :mod:`pyparsing`.
|
|
|
+
|
|
|
+* Now depends on Kombu 1.4.3.
|
|
|
+
|
|
|
+* CELERY_IMPORTS can now be a scalar value (Issue #485).
|
|
|
+
|
|
|
+ It is too easy to forget to add the comma after the sole element of a
|
|
|
+ tuple, and this is something that often affects newcomers.
|
|
|
+
|
|
|
+ The docs should probably use a list in examples, as using a tuple
|
|
|
+ for this doesn't even make sense. Nonetheless, there are many
|
|
|
+ tutorials out there using a tuple, and this change should be a help
|
|
|
+ to new users.
|
|
|
+
|
|
|
+ Suggested by jsaxon-cars.
|
|
|
+
|
|
|
+* Fixed a memory leak when using the thread pool (Issue #486).
|
|
|
+
|
|
|
+ Contributed by Kornelijus Survila.
|
|
|
+
|
|
|
+* The statedb was not saved at exit.
|
|
|
+
|
|
|
+ This has now been fixed and it should again remember previously
|
|
|
+ revoked tasks when a ``--statedb`` is enabled.
|
|
|
+
|
|
|
+* Adds :setting:`EMAIL_USE_TLS` to enable secure SMTP connections
|
|
|
+ (Issue #418).
|
|
|
+
|
|
|
+ Contributed by Stefan Kjartansson.
|
|
|
+
|
|
|
+* Now handles missing fields in task messages as documented in the message
|
|
|
+ format documentation.
|
|
|
+
|
|
|
+ * Missing required field throws :exc:`InvalidTaskError`
|
|
|
+ * Missing args/kwargs is assumed empty.
|
|
|
+
|
|
|
+ Contributed by Chris Chamberlin.
|
|
|
+
|
|
|
+* Fixed race condition in celery.events.state (celerymon/celeryev)
|
|
|
+ where task info would be removed while iterating over it (Issue #501).
|
|
|
+
|
|
|
+* The Cache, Cassandra, MongoDB, Redis and Tyrant backends now respects
|
|
|
+ the :setting:`CELERY_RESULT_SERIALIZER` setting (Issue #435).
|
|
|
+
|
|
|
+ This means that only the database (django/sqlalchemy) backends
|
|
|
+ currently does not support using custom serializers.
|
|
|
+
|
|
|
+ Contributed by Steeve Morin
|
|
|
+
|
|
|
+* Logging calls no longer manually formats messages, but delegates
|
|
|
+ that to the logging system, so tools like Sentry can easier
|
|
|
+ work with the messages (Issue #445).
|
|
|
+
|
|
|
+ Contributed by Chris Adams.
|
|
|
+
|
|
|
+* ``celeryd_multi`` now supports a ``stop_verify`` command to wait for
|
|
|
+ processes to shutdown.
|
|
|
+
|
|
|
+* Cache backend did not work if the cache key was unicode (Issue #504).
|
|
|
+
|
|
|
+ Fix contributed by Neil Chintomby.
|
|
|
+
|
|
|
+* New setting :setting:`CELERY_RESULT_DB_SHORT_LIVED_SESSIONS` added,
|
|
|
+ which if enabled will disable the caching of SQLAlchemy sessions
|
|
|
+ (Issue #449).
|
|
|
+
|
|
|
+ Contributed by Leo Dirac.
|
|
|
+
|
|
|
+* All result backends now implements ``__reduce__`` so that they can
|
|
|
+ be pickled (Issue #441).
|
|
|
+
|
|
|
+ Fix contributed by Remy Noel
|
|
|
+
|
|
|
+* celeryd-multi did not work on Windows (Issue #472).
|
|
|
+
|
|
|
+* New-style ``CELERY_REDIS_*`` settings now takes precedence over
|
|
|
+ the old ``REDIS_*`` configuration keys (Issue #508).
|
|
|
+
|
|
|
+ Fix contributed by Joshua Ginsberg
|
|
|
+
|
|
|
+* Generic celerybeat init script no longer sets `bash -e` (Issue #510).
|
|
|
+
|
|
|
+ Fix contributed by Roger Hu.
|
|
|
+
|
|
|
+* Documented that Chords do not work well with redis-server versions
|
|
|
+ before 2.2.
|
|
|
+
|
|
|
+ Contributed by Dan McGee.
|
|
|
+
|
|
|
+* The :setting:`CELERYBEAT_MAX_LOOP_INTERVAL` setting was not respected.
|
|
|
+
|
|
|
+* ``inspect.registered_tasks`` renamed to ``inspect.registered`` for naming
|
|
|
+ consistency.
|
|
|
+
|
|
|
+ The previous name is still available as an alias.
|
|
|
+
|
|
|
+ Contributed by Mher Movsisyan
|
|
|
+
|
|
|
+* Worker logged the string representation of args and kwargs
|
|
|
+ without safe guards (Issue #480).
|
|
|
+
|
|
|
+* RHEL init script: Changed celeryd startup priority.
|
|
|
+
|
|
|
+ The default start / stop priorities for MySQL on RHEL are
|
|
|
+
|
|
|
+ # chkconfig: - 64 36
|
|
|
+
|
|
|
+ Therefore, if Celery is using a database as a broker / message store, it
|
|
|
+ should be started after the database is up and running, otherwise errors
|
|
|
+ will ensue. This commit changes the priority in the init script to
|
|
|
+
|
|
|
+ # chkconfig: - 85 15
|
|
|
+
|
|
|
+ which are the default recommended settings for 3-rd party applications
|
|
|
+ and assure that Celery will be started after the database service & shut
|
|
|
+ down before it terminates.
|
|
|
+
|
|
|
+ Contributed by Yury V. Zaytsev.
|
|
|
+
|
|
|
+* KeyValueStoreBackend.get_many did not respect the ``timeout`` argument
|
|
|
+ (Issue #512).
|
|
|
+
|
|
|
+* celerybeat/celeryev's --workdir option did not chdir before after
|
|
|
+ configuration was attempted (Issue #506).
|
|
|
+
|
|
|
+* After deprecating 2.4 support we can now name modules correctly, since we
|
|
|
+ can take use of absolute imports.
|
|
|
+
|
|
|
+ Therefore the following internal modules have been renamed:
|
|
|
+
|
|
|
+ celery.concurrency.evlet -> celery.concurrency.eventlet
|
|
|
+ celery.concurrency.evg -> celery.concurrency.gevent
|
|
|
+
|
|
|
+* AUTHORS file is now sorted alphabetically.
|
|
|
+
|
|
|
+ Also, as you may have noticed the contributors of new features/fixes are
|
|
|
+ now mentioned in the Changelog.
|
|
|
+
|
|
|
+.. _version-2.3.3:
|
|
|
+
|
|
|
+2.3.3
|
|
|
+=====
|
|
|
+:release-date: 2011-16-09 05:00 P.M BST
|
|
|
+:by: Mher Movsisyan
|
|
|
+
|
|
|
+* Monkey patching :attr:`sys.stdout` could result in the worker
|
|
|
+ crashing if the replacing object did not define :meth:`isatty`
|
|
|
+ (Issue #477).
|
|
|
+
|
|
|
+* ``CELERYD`` option in :file:`/etc/default/celeryd` should not
|
|
|
+ be used with generic init scripts.
|
|
|
+
|
|
|
+
|
|
|
+.. _version-2.3.2:
|
|
|
+
|
|
|
+2.3.2
|
|
|
+=====
|
|
|
+:release-date: 2011-10-07 05:00 P.M BST
|
|
|
+
|
|
|
+.. _v232-news:
|
|
|
+
|
|
|
+News
|
|
|
+----
|
|
|
+
|
|
|
+* Improved Contributing guide.
|
|
|
+
|
|
|
+ If you'd like to contribute to Celery you should read this
|
|
|
+ guide: http://ask.github.com/celery/contributing.html
|
|
|
+
|
|
|
+ We are looking for contributors at all skill levels, so don't
|
|
|
+ hesitate!
|
|
|
+
|
|
|
+* Now depends on Kombu 1.3.1
|
|
|
+
|
|
|
+* ``Task.request`` now contains the current worker host name (Issue #460).
|
|
|
+
|
|
|
+ Available as ``task.request.hostname``.
|
|
|
+
|
|
|
+* It is now easier for app subclasses to extend how they are pickled.
|
|
|
+ (see :class:`celery.app.AppPickler`).
|
|
|
+
|
|
|
+.. _v232-fixes:
|
|
|
+
|
|
|
+Fixes
|
|
|
+-----
|
|
|
+
|
|
|
+* `purge/discard_all` was not working correctly (Issue #455).
|
|
|
+
|
|
|
+* The coloring of log messages didn't handle non-ASCII data well
|
|
|
+ (Issue #427).
|
|
|
+
|
|
|
+* [Windows] the multiprocessing pool tried to import ``os.kill``
|
|
|
+ even though this is not available there (Issue #450).
|
|
|
+
|
|
|
+* Fixes case where the worker could become unresponsive because of tasks
|
|
|
+ exceeding the hard time limit.
|
|
|
+
|
|
|
+* The ``task-sent`` event was missing from the event reference.
|
|
|
+
|
|
|
+* ``ResultSet.iterate`` now returns results as they finish (Issue #459).
|
|
|
+
|
|
|
+ This was not the case previously, even though the documentation
|
|
|
+ states this was the expected behavior.
|
|
|
+
|
|
|
+* Retries will no longer be performed when tasks are called directly
|
|
|
+ (using ``__call__``).
|
|
|
+
|
|
|
+ Instead the exception passed to ``retry`` will be re-raised.
|
|
|
+
|
|
|
+* Eventlet no longer crashes if autoscale is enabled.
|
|
|
+
|
|
|
+ growing and shrinking eventlet pools is still not supported.
|
|
|
+
|
|
|
+* py24 target removed from :file:`tox.ini`.
|
|
|
+
|
|
|
+
|
|
|
.. _version-2.3.1:
|
|
|
|
|
|
2.3.1
|
|
@@ -1436,7 +1817,7 @@ News
|
|
|
:class:`~celery.task.control.inspect`.
|
|
|
|
|
|
|
|
|
- Example using celeryctl to start consuming from queue "queue", in
|
|
|
+ Example using celeryctl to start consuming from queue "queue", in
|
|
|
exchange "exchange", of type "direct" using binding key "key"::
|
|
|
|
|
|
$ celeryctl inspect add_consumer queue exchange direct key
|
|
@@ -3359,7 +3740,7 @@ Fixes
|
|
|
by rounding to the nearest day/hour.
|
|
|
|
|
|
* Fixed a potential infinite loop in `BaseAsyncResult.__eq__`, although
|
|
|
- there is no evidence that it has ever been triggered.
|
|
|
+ there is no evidence that it has ever been triggered.
|
|
|
|
|
|
* celeryd: Now handles messages with encoding problems by acking them and
|
|
|
emitting an error message.
|
|
@@ -3422,7 +3803,7 @@ Fixes
|
|
|
|
|
|
* Execution: `.messaging.TaskPublisher.send_task` now
|
|
|
incorporates all the functionality apply_async previously did.
|
|
|
-
|
|
|
+
|
|
|
Like converting countdowns to eta, so :func:`celery.execute.apply_async` is
|
|
|
now simply a convenient front-end to
|
|
|
:meth:`celery.messaging.TaskPublisher.send_task`, using
|
|
@@ -3479,7 +3860,7 @@ Fixes
|
|
|
is revoked even though it's currently being hold because its eta is e.g.
|
|
|
a week into the future.
|
|
|
|
|
|
-* The `task_id` argument is now respected even if the task is executed
|
|
|
+* The `task_id` argument is now respected even if the task is executed
|
|
|
eagerly (either using apply, or :setting:`CELERY_ALWAYS_EAGER`).
|
|
|
|
|
|
* The internal queues are now cleared if the connection is reset.
|
|
@@ -3751,7 +4132,7 @@ News
|
|
|
... ([8, 8], {}, {"countdown": 3})])
|
|
|
>>> ts.run()
|
|
|
|
|
|
-* Got a 3x performance gain by setting the prefetch count to four times the
|
|
|
+* Got a 3x performance gain by setting the prefetch count to four times the
|
|
|
concurrency, (from an average task round-trip of 0.1s to 0.03s!).
|
|
|
|
|
|
A new setting has been added: :setting:`CELERYD_PREFETCH_MULTIPLIER`, which
|
|
@@ -3888,7 +4269,7 @@ Documentation
|
|
|
:release-date: 2009-11-20 03:40 P.M CEST
|
|
|
|
|
|
* QOS Prefetch count was not applied properly, as it was set for every message
|
|
|
- received (which apparently behaves like, "receive one more"), instead of only
|
|
|
+ received (which apparently behaves like, "receive one more"), instead of only
|
|
|
set when our wanted value changed.
|
|
|
|
|
|
.. _version-0.8.1:
|
|
@@ -4065,7 +4446,7 @@ Important changes
|
|
|
|
|
|
* Support for multiple AMQP exchanges and queues.
|
|
|
|
|
|
- This feature misses documentation and tests, so anyone interested
|
|
|
+ This feature misses documentation and tests, so anyone interested
|
|
|
is encouraged to improve this situation.
|
|
|
|
|
|
* celeryd now survives a restart of the AMQP server!
|
|
@@ -4188,7 +4569,7 @@ News
|
|
|
|
|
|
* Functions/methods with a timeout argument now works correctly.
|
|
|
|
|
|
-* New: `celery.strategy.even_time_distribution`:
|
|
|
+* New: `celery.strategy.even_time_distribution`:
|
|
|
With an iterator yielding task args, kwargs tuples, evenly distribute
|
|
|
the processing of its tasks throughout the time window available.
|
|
|
|
|
@@ -4351,7 +4732,7 @@ News
|
|
|
* Only use README as long_description if the file exists so easy_install
|
|
|
doesn't break.
|
|
|
|
|
|
-* `celery.view`: JSON responses now properly set its mime-type.
|
|
|
+* `celery.view`: JSON responses now properly set its mime-type.
|
|
|
|
|
|
* `apply_async` now has a `connection` keyword argument so you
|
|
|
can re-use the same AMQP connection if you want to execute
|
|
@@ -4537,7 +4918,7 @@ arguments, so be sure to flush your task queue before you upgrade.
|
|
|
version to 0.2. This is a pre-release.
|
|
|
|
|
|
* `celery.task.mark_as_read()` and `celery.task.mark_as_failure()` has
|
|
|
- been removed. Use `celery.backends.default_backend.mark_as_read()`,
|
|
|
+ been removed. Use `celery.backends.default_backend.mark_as_read()`,
|
|
|
and `celery.backends.default_backend.mark_as_failure()` instead.
|
|
|
|
|
|
.. _version-0.1.15:
|
|
@@ -4594,7 +4975,7 @@ arguments, so be sure to flush your task queue before you upgrade.
|
|
|
happened. It kind of works like the `multiprocessing.AsyncResult`
|
|
|
class returned by `multiprocessing.Pool.map_async`.
|
|
|
|
|
|
-* Added dmap() and dmap_async(). This works like the
|
|
|
+* Added dmap() and dmap_async(). This works like the
|
|
|
`multiprocessing.Pool` versions except they are tasks
|
|
|
distributed to the celery server. Example:
|
|
|
|