123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402 |
- .. _changelog-2.4:
- ===============================
- Change history for Celery 2.4
- ===============================
- .. contents::
- :local:
- .. _version-2.4.5:
- 2.4.5
- =====
- :release-date: 2011-12-02 05:00 P.M GMT
- :release-by: Ask Solem
- * Periodic task interval schedules were accidentally rounded down,
- resulting in some periodic tasks being executed early.
- * Logging of humanized times in the beat log is now more detailed.
- * New :ref:`brokers` section in the Getting Started part of the Documentation
- This replaces the old "Other queues" tutorial, and adds
- documentation for MongoDB, Beanstalk and CouchDB.
- .. _version-2.4.4:
- 2.4.4
- =====
- :release-date: 2011-11-25 04:00 P.M GMT
- :release-by: Ask Solem
- .. _v244-security-fixes:
- Security Fixes
- --------------
- * [Security: `CELERYSA-0001`_] Daemons would set effective id's rather than
- real id's when the :option:`--uid`/:option:`--gid` arguments to
- :program:`celery multi`, :program:`celeryd_detach`,
- :program:`celery beat` and :program:`celery events` were used.
- This means privileges weren't properly dropped, and that it would
- be possible to regain supervisor privileges later.
- .. _`CELERYSA-0001`:
- http://github.com/celery/celery/tree/master/docs/sec/CELERYSA-0001.txt
- .. _v244-fixes:
- Fixes
- -----
- * Processes pool: Fixed rare deadlock at shutdown (Issue #523).
- Fix contributed by Ionel Maries Christian.
- * Webhook tasks issued the wrong HTTP POST headers (Issue #515).
- The *Content-Type* header has been changed from
- ``application/json`` ⇒ ``application/x-www-form-urlencoded``,
- and adds a proper *Content-Length* header.
- Fix contributed by Mitar.
- * Daemonization tutorial: Adds a configuration example using Django and
- virtualenv together (Issue #505).
- Contributed by Juan Ignacio Catalano.
- * generic init scripts now automatically creates log and pid file
- directories (Issue #545).
- Contributed by Chris Streeter.
- .. _version-2.4.3:
- 2.4.3
- =====
- :release-date: 2011-11-22 06:00 P.M GMT
- :release-by: Ask Solem
- * Fixes module import typo in `celeryctl` (Issue #538).
- Fix contributed by Chris Streeter.
- .. _version-2.4.2:
- 2.4.2
- =====
- :release-date: 2011-11-14 12:00 P.M GMT
- :release-by: Ask Solem
- * Program module no longer uses relative imports so that it is
- possible to do ``python -m celery.bin.name``.
- .. _version-2.4.1:
- 2.4.1
- =====
- :release-date: 2011-11-07 06:00 P.M GMT
- :release-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).
- * worker: 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
- :release-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 4.0.
- Note that this means that the result backend requires RabbitMQ 2.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:
- .. code-block:: console
- $ celery worker -b redis://localhost
- $ celery inspect -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 4.0.
- * Additional Deprecations
- The following functions has been deprecated and is scheduled for removal in
- version 4.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 4.0:
- ===================================== ===================================
- **Old setting** **Alternative**
- ===================================== ===================================
- `CELERYD_LOG_LEVEL` ``celery worker --loglevel=``
- `CELERYD_LOG_FILE` ``celery worker --logfile=``
- `CELERYBEAT_LOG_LEVEL` ``celery beat --loglevel=``
- `CELERYBEAT_LOG_FILE` ``celery beat --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.
- * ``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
- * 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 beat 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 worker 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).
- * beat/events'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.
|