------------------------------------------------------------------- Thu Jul 5 16:30:11 UTC 2012 - alexandre@exatati.com.br - 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. ------------------------------------------------------------------- Mon Jun 25 02:37:27 UTC 2012 - alexandre@exatati.com.br - 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, 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. ------------------------------------------------------------------- Fri Jun 22 17:03:30 UTC 2012 - alexandre@exatati.com.br - 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/ ------------------------------------------------------------------- Thu Jun 21 14:40:14 UTC 2012 - alexandre@exatati.com.br - Update to 2.2.1: - 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. ------------------------------------------------------------------- Fri Jun 8 12:58:07 UTC 2012 - alexandre@exatati.com.br - Update to 2.2.0: - Please read descriptive changelog here: http://kombu.readthedocs.org/en/latest/changelog.html#version-2-2-0 ------------------------------------------------------------------- Mon May 7 20:49:30 UTC 2012 - alexandre@exatati.com.br - Update to 2.1.8: * 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. ------------------------------------------------------------------- Fri Apr 27 18:59:01 UTC 2012 - alexandre@exatati.com.br - Update to 2.1.7: * compat consumerset now accepts optional channel argument. ------------------------------------------------------------------- Mon Apr 23 14:41:50 UTC 2012 - alexandre@exatati.com.br - Update to 2.1.6: * 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. ------------------------------------------------------------------- Fri Apr 13 17:37:56 UTC 2012 - alexandre@exatati.com.br - Update to 2.1.5: * 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 ------------------------------------------------------------------- Tue Apr 3 16:49:46 UTC 2012 - alexandre@exatati.com.br - Update to 2.1.4: * 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. ------------------------------------------------------------------- Tue Mar 27 08:35:53 UTC 2012 - saschpe@suse.de - Change rabbitmq-server recommends to suggests, OpenStack doesn't like that - Simplified macro usage - Use upstream tarball ------------------------------------------------------------------- Tue Mar 20 17:42:53 UTC 2012 - alexandre@exatati.com.br - Update to 2.1.3: * Fixes Jython compatibility issues. * Fixes Python 2.5 compatibility issues. ------------------------------------------------------------------- Wed Mar 14 13:45:07 UTC 2012 - alexandre@exatati.com.br - Add BuildRequires python-unittest2 to fix SLE builds. ------------------------------------------------------------------- Wed Mar 14 13:26:04 UTC 2012 - alexandre@exatati.com.br - Do not touch files without a submitrequest. ------------------------------------------------------------------- Sat Mar 10 17:49:39 UTC 2012 - saschpe@gmx.de - Require rabbitmq-server, suggest mongodb or couchdb ------------------------------------------------------------------- Sat Mar 10 17:00:40 UTC 2012 - saschpe@gmx.de - Update to version 2.1.1: * 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 ------------------------------------------------------------------- Sat Feb 4 18:00:49 UTC 2012 - alexandre@exatati.com.br - Update to 2.1.0: * 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). ------------------------------------------------------------------- Tue Jan 17 01:15:23 UTC 2012 - alexandre@exatati.com.br - Update to 2.0.0: 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). ------------------------------------------------------------------- Wed Nov 30 14:55:08 UTC 2011 - alexandre@exatati.com.br - Update to 1.5.1: * Fixes issue with kombu.compat introduced in 1.5.0 (Issue #83). * Adds the ability to disable content_types in the serializer registry. ------------------------------------------------------------------- Mon Nov 28 02:19:24 UTC 2011 - alexandre@exatati.com.br - Update to 1.5.0: * 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 not yet properly initialized. (Issue #78). ------------------------------------------------------------------- Thu Oct 27 22:33:03 UTC 2011 - alexandre@exatati.com.br - Update to 1.4.3: - Fixes bug in ProducerPool where too many resources would be acquired. ------------------------------------------------------------------- Wed Oct 26 18:12:33 UTC 2011 - alexandre@exatati.com.br - Update to 1.4.2: - 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. ------------------------------------------------------------------- Mon Sep 26 18:46:36 UTC 2011 - alexandre@exatati.com.br - Update to 1.4.1: - 1.4.0 broke the producer pool, resulting in new connections being established for every acquire. ------------------------------------------------------------------- Thu Sep 22 16:59:42 UTC 2011 - alexandre@exatati.com.br - Update to 1.4.0: - 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. ------------------------------------------------------------------- Mon Sep 19 18:45:36 UTC 2011 - alexandre@exatati.com.br - Update to 1.3.5: * Python 3: AMQP_PROTOCOL_HEADER must be bytes, not str. - Changes from 1.3.4: * Fixes syntax error in pools.reset ------------------------------------------------------------------- Thu Sep 15 16:55:35 UTC 2011 - alexandre@exatati.com.br - Update to 1.3.3: * pools.reset did not support after forker arguments. ------------------------------------------------------------------- Sun Sep 11 01:15:42 UTC 2011 - alexandre@exatati.com.br - Update to 1.3.2: * 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. ------------------------------------------------------------------- Thu Sep 8 01:40:01 UTC 2011 - alexandre@exatati.com.br - Update to 1.3.1: * 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. ------------------------------------------------------------------- Mon Sep 5 22:53:31 UTC 2011 - alexandre@exatati.com.br - Update to 1.3.0: * 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 ------------------------------------------------------------------- Fri Jul 29 12:44:33 UTC 2011 - alexandre@exatati.com.br - Update to 1.2.1: * 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. ------------------------------------------------------------------- Fri Jul 15 12:52:07 UTC 2011 - alexandre@exatati.com.br - Update to 1.2.0: * 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 ------------------------------------------------------------------- Mon Jun 13 22:42:00 UTC 2011 - alexandre@exatati.com.br - Update to 1.1.6: * 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. ------------------------------------------------------------------- Tue Jun 7 22:57:44 UTC 2011 - alexandre@exatati.com.br - Update to 1.1.5: * Fixes compatibility with redis-py 2.4.4. - Aditional changes from: * Redis transport: Now requires redis-py version 2.4.4 or later. * New Amazon SQS transport added. * librabbitmq transport: Fixes default credentials support. * amqplib transport: Now supports `login_method` for SSL auth. Default login_method is AMQPLAIN. ------------------------------------------------------------------- Thu Apr 21 18:07:47 UTC 2011 - alexandre@exatati.com.br - Update to 1.1.3: * 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. ------------------------------------------------------------------- Wed Apr 6 17:43:07 UTC 2011 - alexandre@exatati.com.br - Update to 1.1.2: * 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. ------------------------------------------------------------------- Wed Apr 6 00:59:48 UTC 2011 - alexandre@exatati.com.br - Update to 1.1.1: * 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 password arguments to BrokerConnection (Issue #30). * BrokerConnection: Default autentication credentials are now delegated to the individual transports. * Consumer.__exit__() did not have the correct signature (Issue #32). * Channel objects now have a channel_id attribute. * MongoDB: Version sniffing broke with development versions of mongod (Issue #29). * New environment variable KOMBU_LOG_CONNECTION will now emit debug log messages for connection related actions. KOMBU_LOG_DEBUG will also enable KOMBU_LOG_CONNECTION. ------------------------------------------------------------------- Tue Mar 29 01:14:55 UTC 2011 - alexandre@exatati.com.br - Update to 1.0.7: * 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). ------------------------------------------------------------------- Tue Mar 22 16:59:52 UTC 2011 - alexandre@exatati.com.br - Update to 1.0.6: - 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. ------------------------------------------------------------------- Tue Mar 1 00:31:41 UTC 2011 - alexandre@exatati.com.br - Update to 1.0.4: * Added Transport.polling_interval Used by django-kombu to increase the time to sleep between SELECTs when there are no messages in the queue. Users of django-kombu should upgrade to django-kombu v0.9.2. ------------------------------------------------------------------- Sat Feb 12 17:17:22 UTC 2011 - alexandre@exatati.com.br - Initial package (1.0.3) for openSUSE.