Changelog History
Page 8
-
v3.0.3 Changes
π :release-date: 2013-11-04 03:00 P.M UTC π :release-by: Ask Solem
βͺ SQS: Properly reverted patch that caused delays between messages.
Contributed by James Saryerwinnie
select: Clear all registerd fds on poller.cloe
Eventloop: unregister if EBADF raised.
.. _version-3.0.2:
-
v3.0.2 Changes
π :release-date: 2013-10-29 02:00 P.M UTC π :release-by: Ask Solem
Now depends on :mod:
amqp
version 1.3.2.π select: Fixed problem where unregister did not properly remove the fd.
.. _version-3.0.1:
-
v3.0.1 Changes
π :release-date: 2013-10-24 04:00 P.M UTC π :release-by: Ask Solem
Now depends on :mod:
amqp
version 1.3.1.Redis: New option
fanout_keyprefix
This transport option is recommended for all users as it ensures that broadcast (fanout) messages sent is only seen by the current virtual host:
.. code-block:: python
Connection('redis://', transport_options={'fanout_keyprefix': True})
However, enabling this means that you cannot send or receive messages from older Kombu versions so make sure all of your participants are upgraded and have the transport option enabled.
This will be the default behavior in Kombu 4.0.
π Distribution: Removed file
requirements/py25.txt
.MongoDB: Now disables
auto_start_request
.MongoDB: Enables
use_greenlets
if eventlet/gevent used.π Pidbox: Fixes problem where expires header was None, which is a value not supported by the amq protocol.
ConsumerMixin: New
consumer_context
method for starting the consumer without draining events.
.. _version-3.0.0:
-
v3.0.0 Changes
π :release-date: 2013-10-14 04:00 P.M BST π :release-by: Ask Solem
Now depends on :mod:
amqp
version 1.3.π No longer supports Python 2.5
The minimum Python version supported is now Python 2.6.0 for Python 2, and Python 3.3 for Python 3.
π Dual codebase supporting both Python 2 and 3.
No longer using
2to3
, making it easier to maintain support for both versions.0οΈβ£ pickle, yaml and msgpack deserialization is now disabled by default.
This means that Kombu will by default refuse to handle any content type other than json.
Pickle is known to be a security concern as it will happily load any object that is embedded in a pickle payload, and payloads can be crafted to do almost anything you want. The default serializer in Kombu is json but it also supports a number of other serialization formats that it will evaluate if received: including pickle.
It was always assumed that users were educated about the security implications of pickle, but in hindsight we don't think users should be expected to secure their services if we have the ability to be secure by default.
By disabling any content type that the user did not explicitly want enabled we ensure that the user must be conscious when they add pickle as a serialization format to support.
The other built-in serializers (yaml and msgpack) are also disabled even though they aren't considered insecure [#f1]_ at this point. Instead they're disabled so that if a security flaw is found in one of these libraries in the future, you will only be affected if you have explicitly enabled them.
To have your consumer accept formats other than json you have to explicitly add the wanted formats to a white-list of accepted content types:
.. code-block:: pycon
>>> c = Consumer(conn, accept=['json', 'pickle', 'msgpack'])
or when using synchronous access:
.. code-block:: pycon
>>> msg = queue.get(accept=['json', 'pickle', 'msgpack'])
The
accept
argument was first supported for consumers in version 2.5.10, and first supported byQueue.get
in version 2.5.15 so to stay compatible with previous versions you can enable the previous behavior:>>> from kombu import enable_insecure_serializers >>> enable_insecure_serializers()
But note that this has global effect, so be very careful should you use it.
.. rubric:: Footnotes
.. [#f1] The PyYAML library has a :func:
yaml.load
function with some of the same security implications as pickle, but Kombu uses the :func:yaml.safe_load
function which is not known to be affected.kombu.async: Experimental event loop implementation.
This code was previously in Celery but was moved here to make it easier for async transport implementations.
The API is meant to match the Tulip API which will be included in Python 3.4 as the
asyncio
module. It's not a complete implementation obviously, but the goal is that it will be easy to change to it once that is possible.π Utility function
kombu.common.ipublish
has been removed.Use
Producer(..., retry=True)
instead.π Utility function
kombu.common.isend_reply
has been removedUse
send_reply(..., retry=True)
instead.kombu.common.entry_to_queue
andkombu.messaging.entry_to_queue
has been removed.Use
Queue.from_dict(name, **options)
instead.βͺ Redis: Messages are now restored at the end of the list.
Contributed by Mark Lavin.
π
StdConnectionError
andStdChannelError
is removed and :exc:amqp.ConnectionError
and :exc:amqp.ChannelError
is used instead.π Message object implementation has moved to :class:
kombu.message.Message
.Serailization: Renamed functions encode/decode to :func:
~kombu.serialization.dumps
and :func:~kombu.serialization.loads
.For backward compatibility the old names are still available as aliases.
π The
kombu.log.anon_logger
function has been removed.Use :func:
~kombu.log.get_logger
instead.queue_declare
now returns namedtuple withqueue
,message_count
, andconsumer_count
fields.π LamportClock: Can now set lock class
:mod:
kombu.utils.clock
: Utilities for ordering events added.:class:
~kombu.simple.SimpleQueue
now allows you to override the exchange type used.Contributed by Vince Gonzales.
β‘οΈ Zookeeper transport updated to support new changes in the :mod:
kazoo
library.Contributed by Mahendra M.
pyamqp/librabbitmq: Transport options are now forwarded as keyword arguments to the underlying connection (Issue #214).
Transports may now distinguish between recoverable and irrecoverable connection and channel errors.
π
kombu.utils.Finalize
has been removed: Use :mod:multiprocessing.util.Finalize
instead.π Memory transport now supports the fanout exchange type.
Contributed by Davanum Srinivas.
Experimental new
Pyro
_ transport (:mod:kombu.transport.pyro
).Contributed by Tommie McAfee.
.. _
Pyro
: http://pythonhosted.org/PyroExperimental new
SoftLayer MQ
_ transport (:mod:kombu.transport.SLMQ
).Contributed by Kevin McDonald
.. _
SoftLayer MQ
: http://www.softlayer.com/services/additional/message-queueEventio: Kqueue breaks in subtle ways so select is now used instead.
SQLAlchemy transport: Can now specify table names using the
queue_tablename
andmessage_tablename
transport options.Contributed by Ryan Petrello.
π Redis transport: Now supports using local UNIX sockets to communicate with the Redis server (Issue #1283)
To connect using a UNIX socket you have to use the ``redis+socket`` URL-prefix: ``redis+socket:///tmp/redis.sock``. This functionality was merged from the `celery-redis-unixsocket`_ project. Contributed by Maxime Rouyrre.
β± ZeroMQ transport: drain_events now supports timeout.
Contributed by Jesper ThomschΓΌtz.
.. _
celery-redis-unixsocket
: https://github.com/piquadrat/celery-redis-unixsocket.. _version-2.5.16:
-
v2.5.16 Changes
π :release-date: 2013-10-04 03:30 P.M BST π :release-by: Ask Solem
- π Python 3: Fixed problem with dependencies not being installed.
.. _version-2.5.15:
-
v2.5.15 Changes
π :release-date: 2013-10-04 03:30 P.M BST π :release-by: Ask Solem
Declaration cache: Now only keeps hash of declaration so that it does not keep a reference to the channel.
Declaration cache: Now respects
entity.can_cache_declaration
attribute.π Fixes Python 2.5 compatibility.
π Fixes tests after python-msgpack changes.
π
Queue.get
: Now supportsaccept
argument.
.. _version-2.5.14:
-
v2.5.14 Changes
π :release-date: 2013-08-23 05:00 P.M BST π :release-by: Ask Solem
- safe_str did not work properly resulting in
:exc:
UnicodeDecodeError
(Issue #248).
.. _version-2.5.13:
- safe_str did not work properly resulting in
:exc:
-
v2.5.13 Changes
π :release-date: 2013-08-16 04:00 P.M BST π :release-by: Ask Solem
Now depends on :mod:
amqp
1.0.13π Fixed typo in Django functional tests.
safe_str now returns Unicode in Python 2.x
Fix contributed by GermΓ‘n M. Bravo.
π amqp: Transport options are now merged with arguments supplied to the connection.
β Tests no longer depends on distribute, which was deprecated and merged back into setuptools.
Fix contributed by Sascha Peilicke.
ConsumerMixin now also restarts on channel related errors.
Fix contributed by Corentin Ardeois.
.. _version-2.5.12:
-
v2.5.12 Changes
π :release-date: 2013-06-28 03:30 P.M BST π :release-by: Ask Solem
Redis: Ignore errors about keys missing in the round-robin cycle.
π Fixed test suite errors on Python 3.
π Fixed msgpack test failures.
.. _version-2.5.11:
-
v2.5.11 Changes
π :release-date: 2013-06-25 02:30 P.M BST π :release-by: Ask Solem
Now depends on amqp 1.0.12 (Py3 compatibility issues).
π MongoDB: Removed cause of a "database name in URI is being ignored" warning.
Fix by Flavio Percoco Premoli
β Adds
passive
option to :class:~kombu.Exchange
.Setting this flag means that the exchange will not be declared by kombu, but that it must exist already (or an exception will be raised).
Contributed by Rafal Malinowski
Connection.info() now gives the current hostname and not the list of available hostnames.
Fix contributed by John Shuping.
pyamqp: Transport options are now forwarded as kwargs to
amqp.Connection
.librabbitmq: Transport options are now forwarded as kwargs to
librabbitmq.Connection
.librabbitmq: Now raises :exc:
NotImplementedError
if SSL is enabled.The librabbitmq library does not support ssl, but you can use stunnel or change to the
pyamqp://
transport instead.Fix contributed by Dan LaMotte.
π librabbitmq: Fixed a cyclic reference at connection close.
π eventio: select implementation now removes bad file descriptors.
π eventio: Fixed Py3 compatibility problems.
β Functional tests added for py-amqp and librabbitmq transports.
Resource.force_close_all no longer uses a mutex.
Pidbox: Now ignores
IconsistencyError
when sending replies, as this error simply means that the client may no longer be alive.β Adds new :meth:
Connection.collect <~kombu.Connection.collect>
method, that can be used to clean up after connections without I/O.queue_bind
is no longer called for queues bound to the "default exchange" (Issue #209).Contributed by Jonathan Halcrow.
The max_retries setting for retries was not respected correctly (off by one).
.. _version-2.5.10: