* 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
- Eventio: Polling should ignore errno.EINTR
- SQS: str.encode did only start accepting kwargs after Py2.7.
- simple_task_queue example didn’t run correctly (Issue #72).
- Empty messages would not raise an exception not able to be
handled by on_decode_error (Issue #72)
- CouchDB: Properly authenticate if user/password set (Issue #70)
- BrokerConnection.Consumer had the wrong signature.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=21
- Adds module kombu.mixins.
- New example: Task Queue Example
- MongoDB transport did not work with MongoDB >= 2.0 (Issue #66)
- Redis-py version check did not account for beta identifiers in
version string.
- Producer and Consumer now accepts a connection instance as the
first argument.
- BrokerConnection has aquired a connected attribute that can be
used to check if the connection instance has established a
connection.
- ConnectionPool.acquire_channel now returns the connections
default channel rather than establising a new channel that must be manually handled.
- Added kombu.common.maybe_declare
- kombu.compat.entry_to_queue() has been moved to kombu.common
- New module kombu.clocks now contains an implementation of
Lamports logical clock.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=19
* Broke Python 2.5 compatibility by importing parse_qsl from urlparse
* Connection.default_channel is now closed when connection is revived
after connection failures.
* Pika: Channel now supports the connection.client attribute
as required by the simple interface.
* pools.set_limit now raises an exception if the limit is lower
than the previous limit.
* pools.set_limit no longer resets the pools.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=16
* Last release broke after fork for pool reinitialization.
* Producer/Consumer now has a connection attribute,
giving access to the BrokerConnection of the
instance.
* Pika: Channels now have access to the underlying
BrokerConnection instance using channel.connection.client.
This was previously required by the Simple classes and is now
also required by Consumer and Producer.
* Connection.default_channel is now closed at object revival.
* Adds kombu.clocks.LamportClock.
* compat.entry_to_queue has been moved to new module kombu.common.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=15
* Broker connection info can be now be specified using URLs
* Now comes with default global connection and producer pools
* SQS Transport: Persistence using SimpleDB is now disabled by
default, after reports of unstable SimpleDB connections leading
to errors
* Producer can now be used as a context manager
* Producer.__exit__ now properly calls release instead of close
* Now silences all exceptions from import ctypes to match behaviour
of the standard Python uuid module, and avoid passing on
MemoryError exceptions on SELinux-enabled systems (Issue #52 +
Issue #53)
* amqp is now an alias to the amqplib transport
* kombu.syn.detect_environment now returns ‘default’, ‘eventlet’,
or ‘gevent’ depending on what monkey patches have been installed
* Serialization registry has new attribute type_to_name so it is
possible to lookup serializater name by content type
* Exchange argument to Producer.publish can now be an Exchange
instance
* compat.Publisher now supports the channel keyword argument
* Acking a message on some transports could lead to KeyError being
raised (Issue #57)
* Connection pool: Connections are no long instantiated when the
pool is created, but instantiated as needed instead
* Tests now pass on PyPy
* Connection.as_uri now includes the password if the keyword
argument include_password is set
* Virtual transports now comes with a default
default_connection_params attribute
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=14
* Now depends on amqplib >= 1.0.0.
* Redis: Now automatically deletes auto_delete queues at basic_cancel.
* serialization.unregister added so it is possible to remove unwanted
seralizers.
* Fixes MemoryError while importing ctypes on SELinux (Issue #52).
* BrokerConnection.autoretry is a version of ensure that works
with arbitrary functions (i.e. it does not need an associated object
that implements the revive method.
* ConnectionPool.acquire no longer force establishes the connection.
The connection will be established as needed.
* BrokerConnection.ensure now supports an on_revive callback
that is applied whenever the connection is re-established.
* Consumer.consuming_from(queue) returns True if the Consumer is
consuming from queue.
* Consumer.cancel_by_queue did not remove the queue from queues.
* compat.ConsumerSet.add_queue_from_dict now automatically declared
the queue if auto_declare set.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=13
* Virtual: Fixes cyclic reference in Channel.close (Issue #49).
* Producer.publish: Can now set additional properties using keyword
arguments (Issue #48).
* Adds Queue.no_ack option to control the no_ack option for individual queues.
* Recent versions broke pylibrabbitmq support.
* SimpleQueue and SimpleBuffer can now be used as contexts.
* Test requirements specifies PyYAML==3.09 as 3.10 dropped Python 2.4 support
* Now properly reports default values in Connection.info/.as_uri
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=12
* Redis: Fixes issue introduced in 1.1.4, where a redis connection
failure could leave consumer hanging forever.
* SQS: Now supports fanout messaging by using SimpleDB to store routing
tables.
This can be disabled by setting the `supports_fanout` transport option:
>>> BrokerConnection(transport="SQS",
... transport_options={"supports_fanout": False})
* SQS: Now properly deletes a message when a message is acked.
* SQS: Can now set the Amazon AWS region, by using the ``region``
transport option.
* amqplib: Now uses `localhost` as default hostname instead of raising an
error.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=11
* Redis: Consuming from multiple connections now works with
Eventlet.
* Redis: Can now perform channel operations while the channel
is in BRPOP/LISTEN mode (Issue #35).
Also the async BRPOP now times out after 1 second, this
means that cancelling consuming from a queue/starting
consuming from additional queues has a latency of up to
one second (BRPOP does not support subsecond timeouts).
* Virtual: Allow channel objects to be closed multiple times
without error.
* amqplib: AttributeError has been added to the list of known
connection related errors (Connection.connection_errors).
* amqplib: Now converts SSLError timeout errors to
socket.timeout (http://bugs.python.org/issue10272)
* Ensures cyclic references are destroyed when the connection
is closed.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=9
* Redis: Fixes serious issue where messages could be lost.
The issue could happen if the message exceeded a certain number
of kilobytes in size.
It is recommended that all users of the Redis transport should
upgrade to this version, even if not currently experiencing any
issues.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=6
* Virtual transports: Message body is now base64 encoded by
default (Issue #27).
This should solve problems sending binary data with virtual
transports.
Message compatibility is handled by adding a body_encoding
property, so messages sent by older versions is compatible
with this release. However – If you are accessing the
messages directly not using Kombu, then you have to respect
the body_encoding property.
For transport authors:
You don’t have to change anything in your custom
transports, as this is handled automatically by the base
class.
If you want to use a different encoder you can do so by
adding a key to Channel.codecs. Default encoding is
specified by the Channel.body_encoding attribute.
A new codec must provide two methods: encode(data) and
decode(data).
* ConnectionPool/ChannelPool/Resource: Setting limit=None
(or 0) now disables pool semantics, and will establish and
close the resource whenever acquired or released.
* ConnectionPool/ChannelPool/Resource: Is now using a LIFO
queue instead of the previous FIFO behavior.
* BrokerConnection: Cloned connections did not inherit
transport_options (__copy__).
* contrib/requirements is now located in the top directory of
the distribution.
* MongoDB: Now supports authentication using the userid and
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=5
* Now depends on anyjson 0.3.1
cjson is no longer a recommended json implementation, and anyjson
will now emit a deprecation warning if used.
* Please note that the Pika backend only works with version 0.5.2.
The latest version (0.9.x) drastically changed API, and it is not
compatible yet.
* on_decode_error is now called for exceptions in message_to_python
(Issue #24).
* Redis: did not respect QoS settings.
* Redis: Creating a connection now ensures the connection is established.
This means BrokerConnection.ensure_connection works properly with
Redis.
* consumer_tag argument to Queue.consume can't be None
(Issue #21).
A None value is now automatically converted to empty string.
An empty string will make the server generate a unique tag.
* BrokerConnection now supports a transport_options argument.
This can be used to pass additional arguments to transports.
* Pika: drain_events raised socket.timeout even if no timeout
set (Issue #8).
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=4
- The delivery_mode aliases (persistent/transient) were not
automatically converted to integer, and would cause a crash if
using the amqplib transport.
- Redis: The redis-py InvalidData exception suddenly changed
name to DataError.
- The KOMBU_LOG_DEBUG environment variable can now be set to log
all channel method calls.
- Support for the following environment variables have been added:
- KOMBU_LOG_CHANNEL will wrap channels in an object that logs
every method call.
- KOMBU_LOG_DEBUG both enables channel logging and configures
the root logger to emit messages to standard error.
- Aditional changes from 1.0.5:
- Fixed memory leak when creating virtual channels. All virtual
transports affected (redis, mongodb, memory, django, sqlalchemy,
couchdb, beanstalk).
- Virtual Transports: Fixed potential race condition when acking
messages.
- If you have been affected by this, the error would show itself
as an exception raised by the OrderedDict implementation.
(object no longer exists).
- MongoDB transport requires the findandmodify command only
available in MongoDB 1.3+, so now raises an exception if
connected to an incompatible server version.
- Virtual Transports: basic.cancel should not try to remove
unknown consumer tag.
- Added AUTHORS Changelog FAQ INSTALL README THANKS TODO files
as documentation.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-kombu?expand=0&rev=3