Changelog History
Page 4
-
v4.2.2-post1 Changes
January 08, 2019π :release-date: 2019-01-01 04:00 P.M IST π :release-by: Omer Katz
.. note::
The previous release contained code from master. It is now deleted from PyPi. Please use this release instead.
- π No changes since previous release.
.. _version-4.2.2:
-
v4.2.1 Changes
May 30, 2018π :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:
-
v4.2.0 Changes
π :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 brokertransport_options
to :meth:~kombu.Connection.ensure_connection
when returning :meth:~kombu.Connection.default_connection
(Issue #765).Contributed by Anthony Lukach.
0οΈβ£ 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:
-
v4.1.0 Changes
π :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/celery#3712).
π 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.
0οΈβ£ 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/celery#3690)
- Avoids issues around a broken endpoints file (Issue celery/celery#3672)
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:
-
v4.0.2 Changes
π :release-date: 2016-12-15 03:31 P.M PST π :release-by: Ask Solem
Now depends on :mod:
amqp
2.1.4This 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:
-
v4.0.1 Changes
π :release-date: 2016-12-07 06:00 P.M PST π :release-by: Ask Solem
Now depends on :mod:
amqp
2.1.3This 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'sMessage(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 themultiple
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 viax-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
, andfanout_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.
0οΈβ£ Exchange.delivery_mode now defaults to :const:
None
, and the default is instead set byProducer.publish
.π :class:
~kombu.Consumer
now supports a newprefetch_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 indelivery_info
, to be compatible with AMQP.reply_to
argument toProducer.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 ofselect
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:
-
v3.0.37 Changes
π :release-date: 2016-10-06 05:00 P.M PDT π :release-by: Ask Solem
- Connection: Return value of
.info()
was no longer JSON serializable, leading to "itertools.cycle object not JSON serializable" errors (Issue #635).
.. _version-3.0.36:
- Connection: Return value of
-
v3.0.36 Changes
π :release-date: 2016-09-30 03:06 P.M PDT π :release-by: Ask Solem
π Connection: Fixed bug when cloning connection with alternate urls.
Fix contributed by Emmanuel Cazenave.
π Redis: Fixed problem with unix socket connections.
https://github.com/celery/celery/issues/2903
Fix contributed by Raphael Michel.
π Redis: Fixed compatibility with older redis-py versions (Issue #576).
Broadcast now retains queue name when being copied/pickled (Issue #578).
.. _version-3.0.35:
-
v3.0.35 Changes
π :release-date: 2016-03-22 11:22 P.M PST π :release-by: Ask Solem
π msgpack: msgpack support now requires msgpack-python > 0.4.7.
Redis: TimeoutError was no longer handled as a recoverable error.
Redis: Adds the ability to set more Redis connection options using
Connection(transport_options={...})
.socket_connect_timeout
socket_keepalive
(requires :mod:redis-py
> 2.10)socket_keepalive_options
(requires :mod:redis-py
> 2.10)
π msgpack: Fixes support for binary/unicode data
.. _version-3.0.34:
-
v3.0.34 Changes
π :release-date: 2016-03-03 05:30 P.M PST π :release-by: Ask Solem
Qpid: Adds async error handling.
Contributed by Brian Bouterse.
Qpid: Delivery tag is now a UUID4 (Issue #563).
Fix contributed by Brian Bouterse.
Redis: Connection.as_uri() returned malformed URLs when the
redis+socket
scheme was ised (Issue celery/celery#2995).msgpack: Use binary encoding instead of utf-8 (Issue #570).
.. _version-3.0.33: