Kombu

Latest version: v5.5.2

Safety actively analyzes 723217 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 10 of 30

4.2.1

Not secure
=====
:release-date: 2018-05-21 09:00 A.M IST
:release-by: Omer Katz

.. note::

The 4.2.0 release contained remains of the ``async`` module by accident.
This is now fixed.

- Handle librabbitmq fileno raising a ValueError when socket is not connected.

Contributed by **Bryan Shelton**

.. _version-4.2.0:

4.2.0

Not secure
=====
:release-date: 2018-05-21 09:00 A.M IST
:release-by: Omer Katz

- Now passing ``max_retries``, ``interval_start``, ``interval_step``,
``interval_max`` parameters from broker ``transport_options`` to
:meth:`~kombu.Connection.ensure_connection` when returning
:meth:`~kombu.Connection.default_connection` (Issue 765).

Contributed by **Anthony Lukach**.

- Qpid: messages are now durable by default

Contributed by **David Davis**

- Kombu now requires version 2.10.4 or greater of the redis library,
in line with Celery

Contributed by **Colin Jeanne**

- Fixed ImportError in some environments with outdated simplejson

Contributed by **Aaron Morris**

- MongoDB: fixed failure on MongoDB versions with an "-rc" tag

Contributed by **dust8**

- Ensure periodic polling frequency does not exceed timeout in
virtual transport

Contributed by **Arcadiy Ivanov**

- Fixed string handling when using python-future module

Contributed by **John Koehl**

- Replaced "async" with "asynchronous" in preparation for Python 3.7

Contributed by **Thomas Achtemichuk**

- Allow removing pool size limit when in use

Contributed by **Alex Hill**

- Codebase improvements and fixes by:

- **j2gg0s**
- **Jon Dufresne**
- **Jonas Lergell**
- **Mads Jensen**
- **Nicolas Delaby**
- **Omer Katz**

- Documentation improvements by:

- **Felix Yan**
- **Harry Moreno**
- **Mads Jensen**
- **Omer Katz**
- **Radha Krishna. S.**
- **Wojciech Matyśkiewicz**

.. _version-4.1.0:

4.1.0

Not secure
=====
:release-date: 2017-07-17 04:45 P.M MST
:release-by: Anthony Lukach

- SQS: Added support for long-polling on all supported queries. Fixed bug
causing error on parsing responses with no retrieved messages from SQS.

Contributed by **Anthony Lukach**.

- Async hub: Fixed potential infinite loop while performing todo tasks
(Issue celery/celery3712).

- Qpid: Fixed bug where messages could have duplicate ``delivery_tag``
(Issue 563).

Contributed by **bmbouter**.

- MongoDB: Fixed problem with using ``readPreference`` option at pymongo 3.x.

Contributed by **Mikhail Elovskikh**.

- Re-added support for :pypi:``SQLAlchemy``

Contributed by **Amin Ghadersohi**.

- SQS: Fixed bug where hostname would default to ``localhost`` if not specified
in settings.

Contributed by **Anthony Lukach**.

- Redis: Added support for reading password from transport URL (Issue 677).

Contributed by **George Psarakis**.

- RabbitMQ: Ensured safer encoding of queue arguments.

Contributed by **Robert Kopaczewski**.

- Added fallback to :func:``uuid.uuid5`` in :func:``generate_oid`` if
:func:``uuid.uuid3`` fails.

Contributed by **Bill Nottingham**.

- Fixed race condition and innacurrate timeouts for
:class:``kombu.simple.SimpleBase`` (Issue 720).

Contributed by **c-nichols**.

- Zookeeper: Fixed last chroot character trimming

Contributed by **Dima Kurguzov**.

- RabbitMQ: Fixed bug causing an exception when attempting to close an
already-closed connection (Issue 690).

Contributed by **eavictor**.

- Removed deprecated use of StopIteration in generators and invalid regex
escape sequence.

Contributed by **Jon Dufresne**.

- Added Python 3.6 to CI testing.

Contributed by **Jon Dufresne**.

- SQS: Allowed endpoint URL to be specified in the boto3 connection.

Contributed by **georgepsarakis**.

- SQS: Added support for Python 3.4.

Contributed by **Anthony Lukach**.

- SQS: ``kombu[sqs]`` now depends on :pypi:`boto3` (no longer using
:pypi:`boto)`.

- Adds support for Python 3.4+
- Adds support for FIFO queues (Issue 678) and (Issue celery/celery3690)
- Avoids issues around a broken endpoints file (Issue celery/celery3672)

Contributed by **Mischa Spiegelmock** and **Jerry Seutter**.

- Zookeeper: Added support for delaying task with Python 3.

Contributed by **Dima Kurguzov**.

- SQS: Fixed bug where :meth:`kombu.transport.SQS.drain_events` did not support
callback argument (Issue 694).

Contributed by **Michael Montgomery**.

- Fixed bug around modifying dictionary size while iterating over it
(Issue 675).

Contributed by **Felix Yan**.

- etcd: Added handling for :exc:`EtcdException` exception rather than
:exc:`EtcdError`.

Contributed by **Stephen Milner**.

- Documentation improvements by:

- **Mads Jensen**
- **Matias Insaurralde**
- **Omer Katz**
- **Dmitry Dygalo**
- **Christopher Hoskin**

.. _version-4.0.2:

4.0.2

Not secure
=====
:release-date: 2016-12-15 03:31 P.M PST
:release-by: Ask Solem

- Now depends on :mod:`amqp` 2.1.4

This new version takes advantage of TCP Keepalive settings on Linux,
making it better at detecting closed connections, also in failover
conditions.

- Redis: Priority was reversed so, e.g. priority 0 became priority 9.

.. _version-4.0.1:

4.0.1

Not secure
=====
:release-date: 2016-12-07 06:00 P.M PST
:release-by: Ask Solem

- Now depends on :mod:`amqp` 2.1.3

This new version takes advantage of the new ``TCP_USER_TIMEOUT`` socket option
on Linux.

- Producer: Fixed performance degradation when default exchange specified
(Issue 651).

- QPid: Switch to using getattr in qpid.Transport.__del__ (Issue 658)

Contributed by **Patrick Creech**.

- QPid: Now uses monotonic time for timeouts.

- MongoDB: Fixed compatibility with Python 3 (Issue 661).

- Consumer: ``__exit__`` now skips cancelling consumer if connection-related
error raised (Issue 670).

- MongoDB: Removes use of natural sort (Issue 638).

Contributed by **Anton Chaporgin**.

- Fixed wrong keyword argument ``channel`` error (Issue 652).

Contributed by **Toomore Chiang**.

- Safe argument to ``urllib.quote`` must be bytes on Python 2.x (Issue 645).

- Documentation improvements by:

- **Carlos Edo**
- **Cemre Mengu**

.. _version-4.0:

4.0

===
:release-date: 2016-10-28 16:45 P.M UTC
:release-by: Ask Solem

- Now depends on :mod:`amqp` 2.0.

The new py-amqp version have been refactored for better performance,
using modern Python socket conventions, and API consistency.

- No longer depends on :mod:`anyjson`.

Kombu will now only choose between :pypi:`simplejson` and the built-in
:mod:`json`.

Using the latest version of simplejson is recommended:

.. code-block:: console

$ pip install -U simplejson

- Removed transports that are no longer supported in this version:

- Django ORM transport
- SQLAlchemy ORM transport
- Beanstalk transport
- ZeroMQ transport
- amqplib transport (use pyamqp).

- API Changes

* Signature of :class:`kombu.Message` now takes body as first argment.

It used to be ``Message(channel, body=body, **kw)``, but now it's
``Message(body, channel=channel, **kw)``.

This is unlikey to affect you, as the Kombu API does not have
users instantiate messages manually.

- New SQS transport

Donated by NextDoor, with additional contributions from mdk.

.. note::

``kombu[sqs]`` now depends on :pypi:`pycurl`.

- New Consul transport.

Contributed by **Wido den Hollander**.

- New etcd transport.

Contributed by **Stephen Milner**.

- New Qpid transport.

It was introduced as an experimental transport in Kombu 3.0, but is now
mature enough to be fully supported.

Created and maintained by **Brian Bouterse**.

- Redis: Priority 0 is now lowest, 9 is highest.
(**backward incompatible**)

This to match how priorities in AMQP works.

Fix contributed by **Alex Koshelev**.

- Redis: Support for Sentinel

You can point the connection to a list of sentinel URLs like:

.. code-block:: text

sentinel://0.0.0.0:26379;sentinel://0.0.0.0:26380/...

where each sentinel is separated by a `;`. Multiple sentinels are handled
by :class:`kombu.Connection` constructor, and placed in the alternative
list of servers to connect to in case of connection failure.

Contributed by **Sergey Azovskov**, and **Lorenzo Mancini**

- RabbitMQ Queue Extensions

New arguments have been added to :class:`kombu.Queue` that lets
you directly and conveniently configure the RabbitMQ queue extensions.

- ``Queue(expires=20.0)``

Set queue expiry time in float seconds.

See :attr:`kombu.Queue.expires`.

- ``Queue(message_ttl=30.0)``

Set queue message time-to-live float seconds.

See :attr:`kombu.Queue.message_ttl`.

- ``Queue(max_length=1000)``

Set queue max length (number of messages) as int.

See :attr:`kombu.Queue.max_length`.

- ``Queue(max_length_bytes=1000)``

Set queue max length (message size total in bytes) as int.

See :attr:`kombu.Queue.max_length_bytes`.

- ``Queue(max_priority=10)``

Declare queue to be a priority queue that routes messages
based on the ``priority`` field of the message.

See :attr:`kombu.Queue.max_priority`.

- RabbitMQ: ``Message.ack`` now supports the ``multiple`` argument.

If multiple is set to True, then all messages received before
the message being acked will also be acknowledged.

- ``amqps://`` can now be specified to require SSL (Issue 610).

- ``Consumer.cancel_by_queue`` is now constant time.

- ``Connection.ensure*`` now raises :exc:`kombu.exceptions.OperationalError`.

Things that can be retried are now reraised as
:exc:`kombu.exceptions.OperationalError`.

- Redis: Fixed SSL support.

Contributed by **Robert Kolba**.

- New ``Queue.consumer_arguments`` can be used for the ability to
set consumer priority via ``x-priority``.

See https://www.rabbitmq.com/consumer-priority.html

Example:

.. code-block:: python

Queue(
'qname',
exchange=Exchange('exchange'),
routing_key='qname',
consumer_arguments={'x-priority': 3},
)

- Queue/Exchange: ``no_declare`` option added (also enabled for
internal amq. exchanges) (Issue 565).

- JSON serializer now calls ``obj.__json__`` for unsupported types.

This means you can now define a ``__json__`` method for custom
types that can be reduced down to a built-in json type.

Example:

.. code-block:: python

class Person:
first_name = None
last_name = None
address = None

def __json__(self):
return {
'first_name': self.first_name,
'last_name': self.last_name,
'address': self.address,
}

- JSON serializer now handles datetimes, Django promise, UUID and Decimal.

- Beanstalk: Priority 0 is now lowest, 9 is highest.
(**backward incompatible**)

This to match how priorities in AMQP works.

Fix contributed by **Alex Koshelev**.

- Redis: now supports SSL using the ``ssl`` argument to
:class:`~kombu.Connection`.

- Redis: Fanout exchanges are no longer visible between vhosts,
and fanout messages can be filtered by patterns.
(**backward incompatible**)

It was possible to enable this mode previously using the
``fanout_prefix``, and ``fanout_patterns``
transport options, but now these are enabled by default.

If you want to mix and match producers/consumers running different
versions you need to configure your kombu 3.x clients to also enable
these options:

.. code-block:: pycon

>>> Connection(transport_options={
'fanout_prefix': True,
'fanout_patterns': True,
})

- Pidbox: Mailbox new arguments: TTL and expiry.

Mailbox now supports new arguments for controlling
message TTLs and queue expiry, both for the mailbox
queue and for reply queues.

- ``queue_expires`` (float/int seconds).
- ``queue_ttl`` (float/int seconds).
- ``reply_queue_expires`` (float/int seconds).
- ``reply_queue_ttl`` (float/int seconds).

All take seconds in int/float.

Contributed by **Alan Justino**.

- Exchange.delivery_mode now defaults to :const:`None`, and the default
is instead set by ``Producer.publish``.

- :class:`~kombu.Consumer` now supports a new ``prefetch_count`` argument,
which if provided will force the consumer to set an initial prefetch count
just before starting.

- Virtual transports now stores ``priority`` as a property, not in
``delivery_info``, to be compatible with AMQP.

- ``reply_to`` argument to ``Producer.publish`` can now be
:class:`~kombu.Queue` instance.

- Connection: There's now a new method
``Connection.supports_exchange_type(type)`` that can be used to check if the
current transport supports a specific exchange type.

- SQS: Consumers can now read json messages not sent by Kombu.

Contributed by **Juan Carlos Ferrer**.

- SQS: Will now log the access key used when authentication fails.

Contributed by **Hank John**.

- Added new :class:`kombu.mixins.ConsumerProducerMixin` for consumers that
will also publish messages on a separate connection.

- Messages: Now have a more descriptive ``repr``.

Contributed by **Joshua Harlow**.

- Async: HTTP client based on curl.

- Async: Now uses `poll` instead of `select` where available.

- MongoDB: Now supports priorities

Contributed by **Alex Koshelev**.

- Virtual transports now supports multiple queue bindings.

Contributed by **Federico Ficarelli**.

- Virtual transports now supports the anon exchange.

If when publishing a message, the exchange argument is set to '' (empty
string), the routing_key will be regarded as the destination queue.

This will bypass the routing table compeltely, and just deliver the
message to the queue name specified in the routing key.

- Zookeeper: Transport now uses the built-in suport in kazoo to handle
failover when using a list of server names.

Contributed by **Joshua Harlow**.

- ConsumerMixin.run now passes keyword arguments to .consume.

Deprecations and removals
-------------------------

- The deprecated method ``Consumer.add_queue_from_dict`` has been removed.

Use instead:

.. code-block:: python

consumer.add_queue(Queue.from_dict(queue_name, **options))

- The deprecated function ``kombu.serialization.encode`` has been removed.

Use :func:`kombu.serialization.dumps` instead.

- The deprecated function ``kombu.serialization.decode`` has been removed.

Use :func:`kombu.serialization.loads` instead.

- Removed module ``kombu.syn``

``detect_environment`` has been moved to kombu.utils.compat

.. _version-3.0.37:

Page 10 of 30

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.