- Pidbox: Fixed compatibility with Python 2.6
- Aditional changes from 2.5.2:
- [Redis] Fixed connection leak and added a new 'max_connections'
transport option.
- Aditional changes from 2.5.1
- Fixed bug where return value of Queue.as_dict could not be
serialized with JSON (Issue #177).
- Aditional changes from 2.5.0
- py-amqp is now the new default transport, replacing amqplib.
The new py-amqp library is a fork of amqplib started with the
following goals:
- Uses AMQP 0.9.1 instead of 0.8
- Support for heartbeats (Issue #79 + Issue #131)
- Automatically revives channels on channel errors.
- Support for all RabbitMQ extensions
- Consumer Cancel Notifications (Issue #131)
- Publisher Confirms (Issue #131).
- Exchange-to-exchange bindings: exchange_bind /
exchange_unbind.
- API compatible with librabbitmq so that it can be used
as a pure-python replacement in environments where rabbitmq-c
cannot be compiled. librabbitmq will be updated to support
all the same features as py-amqp.
- Support for using multiple connection URL's for failover.
The first argument to kombu.Connection can now be a list of connection
URLs:
Connection(['amqp://foo', 'amqp://bar'])
or it can be a single string argument with several URLs separated by
semicolon:
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=60
- Redis: Fixed race condition that could occur while trying to
restore messages (Issue #171).
Fix contributed by Ollie Walsh.
- Redis: Each channel is now using a specific connection pool
instance, which is disconnected on connection failure.
- ProducerPool: Fixed possible dead-lock in the acquire method.
- ProducerPool: force_close_all no longer tries to call the
non-existent Producer._close.
- librabbitmq: Now implements transport.verify_connection so
that connection pools will not give back connections that are
no longer working.
- New and better repr() for Queue and Exchange objects.
- Python3: Fixed problem with running the unit test suite.
- Python3: Fixed problem with JSON codec.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=57
- Redis: Fair queue cyle implementation improved (Issue #166).
Contributed by Kevin McCarthy.
- Redis: Number of messages to restore in one iteration is now
unlimited, but can be configured using the unacked_restore_limit
transport option.
- Redis: A Redis based mutex is now used while restoring messages.
- LamportClock.adjust now returns the new clock value.
- Heartbeats can now be specified in URLs.
Fix contributed by Mher Movsisyan.
- Kombu can now be used with PyDev, PyCharm and other static
analysis tools.
- Fixes problem with msgpack on Python 3 (Issue #162).
Fix contributed by Jasper Bryant-Greene
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=56
- Virtual: Unknown exchanges now default to 'direct' when sending
a message.
- MongoDB: Fixed memory leak when merging keys stored in the db
(Issue #159)
Fix contributed by Michael Korbakov.
- MongoDB: Better index for MongoDB transport (Issue #158).
This improvement will create a new compund index for queue and
_id in order to be able to use both indexed fields for getting
a new message (using queue field) and sorting by _id. It'll be
necessary to manually delete the old index from the collection.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=55
- Update to 2.4.2:
- Having an empty transport name broke in 2.4.1.
- Aditional changes from 2.4.1:
- Redis: Fixed race condition that could cause the consumer to
crash (Issue #151)
Often leading to the error message "could not convert string to
float"
- Connection retry could cause an inifite loop (Issue #145).
- The amqp alias is now resolved at runtime, so that eventlet
detection works even if patching was done later.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=50
- New experimental ZeroMQ transport.
Contributed by John Watson.
- Redis: Ack timed-out messages were not restored when using the eventloop.
- Now uses pickle protocol 2 by default to be cross-compatible with Python 3.
The protocol can also now be changed using the PICKLE_PROTOCOL
environment variable.
- Adds Transport.supports_ev attribute.
- Pika: Queue purge was not working properly.
Fix contributed by Steeve Morin.
- Pika backend was no longer working since Kombu 2.3
Fix contributed by Steeve Morin.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=49
- Fixes problem with deserialization in Python 3.
- Aditional changes from 2.3.1:
- librabbitmq: Can now handle messages that does not have a
content_encoding/content_type set (Issue #149).
Fix contributed by C Anthony Risinger.
- Beanstalk: Now uses localhost by default if the URL does not
contain a host.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=48
- New pyamqp:// transport!
The new py-amqp library is a fork of amqplib started with the
following goals:
- Uses AMQP 0.9.1 instead of 0.8
- Should support all RabbitMQ extensions
- API compatible with librabbitmq so that it can be used
as a pure-python replacement in environments where rabbitmq-c cannot
be compiled.
py-amqp: http://amqp.readthedocs.org/
If you start using use py-amqp instead of amqplib you can enjoy many
advantages including:
- Heartbeat support (Issue #79 + Issue #131)
- Consumer Cancel Notifications (Issue #131)
- Publisher Confirms
amqplib has not been updated in a long while, so maintaining our own fork
ensures that we can quickly roll out new features and fixes without
resorting to monkey patching.
To use the py-amqp transport you must install the amqp library:
$ pip install amqp
and change the connection URL to use the correct transport:
>>> conn = Connection('pyamqp://guest:guest@localhost//')
The pyamqp:// transport will be the default fallback transport
in Kombu version 3.0, when librabbitmq is not installed,
and librabbitmq will also be updated to support the same features.
- Connection now supports heartbeat argument.
If enabled you must make sure to manually maintain heartbeats
by calling the Connection.heartbeat_check at twice the rate
of the specified heartbeat interval.
E.g. if you have Connection(heartbeat=10),
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=47
- Re-enable testsuite and add it's build-time dependencies
- Update to 2.2.6:
- Adds ``messaging.entry_to_queue`` for compat with previous versions.
- Update to 2.2.5:
- Pidbox: Now sets queue expire at 10 seconds for reply queues.
- EventIO: Now ignores ``ValueError`` raised by epoll unregister.
- MongoDB: Fixes Issue #142
Fix by Flavio Percoco Premoli
- Update to 2.2.4:
- Support for msgpack-python 0.2.0 (Issue #143)
The latest msgpack version no longer supports Python 2.5, so if you're
still using that you need to depend on an earlier msgpack-python version.
Fix contributed by Sebastian Insua
- kombu.common.maybe_declare no longer caches entities with the
auto_delete flag set.
- New experimental filesystem transport.
Contributed by Bobby Beever.
- Virtual Transports: Now support anonymous queues and exchanges.
- Update to 2.2.3:
- BrokerConnection now renamed to Connection.
The name Connection has been an alias for a very long time,
but now the rename is official in the documentation as well.
The Connection alias has been available since version 1.1.3,
and BrokerConnection will still work and is not deprecated.
- Connection.clone() now works for the sqlalchemy transport.
- kombu.common.eventloop, kombu.utils.uuid,
OBS-URL: https://build.opensuse.org/request/show/127657
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-kombu?expand=0&rev=15
+ Adds messaging.entry_to_queue for compat with previous versions.
+ Changes from version 2.2.5:
+ Pidbox: Now sets queue expire at 10 seconds for reply queues.
+ EventIO: Now ignores ValueError raised by epoll unregister.
+ MongoDB: Fixes Issue #142
- Changes from version 2.2.4:
+ Support for msgpack-python 0.2.0 (Issue #143)
+ kombu.common.maybe_declare no longer caches entities with the
auto_delete flag set.
+ New experimental filesystem transport.
+ Virtual Transports: Now support anonymous queues and exchanges.
- retry argument to Producer.publish now works properly,
and only later bound using .revive(channel).
* ProducerPool now takes Producer argument.
* We now patch amqplib's __del__ method to skip trying to close the socket
* The Connection.ensure methods now accepts a max_retries value
A value of 0 now means *do not retry*, which is distinct from :const:None
* SQS Transport: Now has a lowercase sqs alias, so that it can be
This can be disabled by setting the supports_fanout transport option:
* SQS: Can now set the Amazon AWS region, by using the region
* amqplib: Now uses localhost as default hostname instead of raising an
* amqplib transport: Now supports login_method for SSL auth.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=46
- Support for msgpack-python 0.2.0 (Issue #143)
The latest msgpack version no longer supports Python 2.5, so if you're
still using that you need to depend on an earlier msgpack-python version.
Fix contributed by Sebastian Insua
- kombu.common.maybe_declare no longer caches entities with the
auto_delete flag set.
- New experimental filesystem transport.
Contributed by Bobby Beever.
- Virtual Transports: Now support anonymous queues and exchanges.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=43
- BrokerConnection now renamed to Connection.
The name Connection has been an alias for a very long time,
but now the rename is official in the documentation as well.
The Connection alias has been available since version 1.1.3,
and BrokerConnection will still work and is not deprecated.
- Connection.clone() now works for the sqlalchemy transport.
- kombu.common.eventloop, kombu.utils.uuid,
and kombu.utils.url.parse_url can now be
imported from the kombu module directly.
- Pidbox transport callback after_reply_message_received now happens
in a finally block.
- Trying to use the librabbitmq:// transport will now show the right
name in the ImportError if librabbitmq is not installed.
The librabbitmq falls back to the older pylibrabbitmq name for
compatibility reasons and would therefore show No module named
pylibrabbitmq instead of librabbitmq.
- Update to 2.2.2:
- Now depends on anyjson 0.3.3
- Json serializer: Now passes buffer objects directly,
since this is supported in the latest anyjson version.
- Fixes blocking epoll call if timeout was set to 0.
Fix contributed by John Watson.
- setup.py now takes requirements from the requirements/ directory.
- The distribution directory contrib/ is now renamed to extra/
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=42
- SQS: Default visibility timeout is now 30 minutes.
Since we have ack emulation the visibility timeout is
only in effect if the consumer is abrubtly terminated.
- retry argument to ``Producer.publish`` now works properly,
when the declare argument is specified.
- Json serializer: didn't handle buffer objects (Issue #135).
Fix contributed by Jens Hoffrichter.
- Virtual: Now supports passive argument to exchange_declare.
- Exchange & Queue can now be bound to connections (which will use
the default channel):
>>> exchange = Exchange("name")
>>> bound_exchange = exchange(connection)
>>> bound_exchange.declare()
- SimpleQueue & SimpleBuffer can now be bound to connections (which
will use the default channel).
- Connection.manager.get_bindings now works for librabbitmq and pika.
- Adds new transport info attributes:
- Transport.driver_type
Type of underlying driver, e.g. "amqp", "redis", "sql".
- Transport.driver_name
Name of library used e.g. "amqplib", "redis", "pymongo".
- Transport.driver_version()
Version of underlying library.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=41
* Bound Exchange/Queue's are now pickleable.
* Consumer/Producer can now be instantiated without a channel,
and only later bound using ``.revive(channel)``.
* ProducerPool now takes ``Producer`` argument.
* kombu.utils.fxrange now counts forever if the
stop argument is set to None.
(fxrange is like xrange but for decimals).
* Auto delete support for virtual transports were incomplete
and could lead to problems so it was removed.
* Cached declarations (kombu.common.maybe_declare)
are now bound to the underlying connection, so that
entities are redeclared if the connection is lost.
This also means that previously uncacheable entities
(e.g. non-durable) can now be cached.
* compat ConsumerSet: can now specify channel.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=39
* SQLAlchemy transport was not working correctly after URL parser change.
* maybe_declare now stores cached declarations per underlying connection
instead of globally, in the rare case that data disappears from the
broker after connection loss.
* Django: Added South migrations.
Contributed by Joseph Crosland.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=37
* The url parser removed more than the first leading slash (Issue #121).
* SQLAlchemy: Can now specify url using + separator
Example::
BrokerConnection("sqla+mysql://localhost/db")
* Better support for anonymous queues (Issue #116).
Contributed by Michael Barrett.
* Connection.as_uri now quotes url parts (Issue #117).
* Beanstalk: Can now set message TTR as a message property.
Contributed by Andrii Kostenko
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=36
* MongoDB: URL parsing are now delegated to the pymongo library
(Fixes Issue #103 and Issue #87).
Fix contributed by Flavio Percoco Premoli and James Sullivan
* SQS: A bug caused SimpleDB to be used even if sdb persistence
was not enabled (Issue #108).
Fix contributed by Anand Kumria.
* Django: Transaction was committed in the wrong place, causing
data cleanup to fail (Issue #115).
Fix contributed by Daisuke Fujiwara.
* MongoDB: Now supports replica set URLs.
Contributed by Flavio Percoco Premoli.
* Redis: Now raises a channel error if a queue key that is currently
being consumed from disappears.
Fix contributed by Stephan Jaekel.
* All transport 'channel_errors' lists now includes
kombu.exception.StdChannelError.
* All kombu exceptions now inherit from a common
kombu.exceptions.KombuError.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=35
* Connection URLs now supports encoded characters.
* Fixed a case where connection pool could not recover from connection loss.
* We now patch amqplib's ``__del__`` method to skip trying to close the socket
if it is not connected, as this resulted in an annoying warning.
* Compression can now be used with binary message payloads.
- Don't install INSTALL
- Run testsuite
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=28
* MongoDB: Now supports fanout (broadcast) (Issue #98).
Contributed by Scott Lyons.
* pika transport: Now works with pika 0.9.5 and 0.9.6dev.
The old pika transport (supporting 0.5.x) is now available
as alias oldpika.
(Note terribly latency has been experienced with the new pika
versions, so this is still an experimental transport).
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=27
Important Notes
- No longer supports Python 2.4.
New Transports
- django-kombu is now part of Kombu core.
- kombu-sqlalchemy is now part of Kombu core.
News
- kombu.mixins.ConsumerMixin is a mixin class that lets you
easily write consumer programs and threads.
- SQS Transport: Added support for SQS queue prefixes (Issue #84).
- Producer.publish now supports automatic retry.
- Producer.publish now supports a declare keyword argument.
Fixes
- Redis transport: Timeout was multiplied by 1000 seconds when
using select for event I/O (Issue #86).
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=26
* kombu.pools: Fixed a bug resulting in resources not being properly released.
This was caused by the use of __hash__ to distinguish them.
* Virtual transports: Dead-letter queue is now disabled by default.
The dead-letter queue was enabled by default to help application
authors, but now that Kombu is stable it should be removed.
There are after all many cases where messages should just be dropped
when there are no queues to buffer them, and keeping them without
supporting automatic cleanup is rather considered a resource leak
than a feature.
If wanted the dead-letter queue can still be enabled, by using
the deadletter_queue transport option:
>>> x = BrokerConnection("redis://",
... transport_options={"deadletter_queue": "ae.undeliver"})
In addition, an UndeliverableWarning is now emitted when
the dead-letter queue is enabled and a message ends up there.
* MongoDB transport now supports Replicasets (Issue #81).
* The Connection.ensure`` methods now accepts a max_retries value
of 0.
A value of 0 now means *do not retry*, which is distinct from :const:`None`
which means *retry indefinitely*.
* SQS Transport: Now has a lowercase `sqs alias, so that it can be
used with broker URLs (Issue #82).
* SQS Transport: Fixes KeyError on message acknowledgements (Issue #73).
The SQS transport now uses UUID's for delivery tags, rather than
a counter.
* SQS Transport: Unicode related fixes (Issue #82).
* Redis version check could crash because of improper handling of types
(Issue #63).
* Fixed error with Resource.force_close_all, when resources
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=24