1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
|
================
Change history
================
.. _version-1.1.0:
1.1.0
=====
:release-date: 2011-04-05 01:05 P.M CEST
.. _v110-important:
Important Notes
---------------
* 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.
If you need to disable base64 encoding then you can do so
via the transport options::
BrokerConnection(transport="...",
transport_options={"body_encoding": None})
**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.
This means that the last resource released will be the one
acquired next. I.e. if only a single thread is using the pool
this means only a single connection will ever be used.
* 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 :class:`BrokerConnection` (Issue #30).
* BrokerConnection: Default autentication credentials are now delegated to
the individual transports.
This means that the ``userid`` and ``password`` arguments to
BrokerConnection is no longer *guest/guest* by default.
The amqplib and pika transports will still have the default
credentials.
* :meth:`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 :envvar:`KOMBU_LOG_CONNECTION` will now emit debug
log messages for connection related actions.
:envvar:`KOMBU_LOG_DEBUG` will also enable :envvar:`KOMBU_LOG_CONNECTION`.
.. _version-1.0.7:
1.0.7
=====
:release-date: 2011-03-28 05:45 P.M CEST
* 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 :const:`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 :exc:`socket.timeout` even if no timeout
set (Issue #8).
.. version-1.0.6:
1.0.6
=====
:release-date: 2011-03-22 04:00 P.M CET
* 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 :exc:`InvalidData` exception suddenly changed name to
:exc:`DataError`.
* The :envvar:`KOMBU_LOG_DEBUG` environment variable can now be set to log all
channel method calls.
Support for the following environment variables have been added:
* :envvar:`KOMBU_LOG_CHANNEL` will wrap channels in an object that
logs every method call.
* :envvar:`KOMBU_LOG_DEBUG` both enables channel logging and configures the
root logger to emit messages to standard error.
**Example Usage**::
$ KOMBU_LOG_DEBUG=1 python
>>> from kombu import BrokerConnection
>>> conn = BrokerConnection()
>>> channel = conn.channel()
Start from server, version: 8.0, properties:
{u'product': 'RabbitMQ',.............. }
Open OK! known_hosts []
using channel_id: 1
Channel open
>>> channel.queue_declare("myq", passive=True)
[Kombu channel:1] queue_declare('myq', passive=True)
(u'myq', 0, 1)
.. _version-1.0.5:
1.0.5
=====
:release-date: 2011-03-17 04:00 P.M CET
* 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.
.. _version-1.0.4:
1.0.4
=====
:release-date: 2011-02-28 04:00 P.M CET
* 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.
.. _version-1.0.3:
1.0.3
=====
:release-date: 2011-02-12 04:00 P.M CET
* ConnectionPool: Re-connect if amqplib connection closed
* Adds ``Queue.as_dict`` + ``Exchange.as_dict``.
* Copyright headers updated to include 2011.
.. _version-1.0.2:
1.0.2
=====
:release-date: 2011-01-31 10:45 P.M CET
* amqplib: Message properties were not set properly.
* Ghettoq backend names are now automatically translated to the new names.
.. _version-1.0.1:
1.0.1
=====
:release-date: 2011-01-28 12:00 P.M CET
* Redis: Now works with Linux (epoll)
.. _version-1.0.0:
1.0.0
=====
:release-date: 2011-01-27 12:00 P.M CET
* Initial release
.. _version-0.1.0:
0.1.0
=====
:release-date: 2010-07-22 04:20 P.M CET
* Initial fork of carrot
|