forked from celery/py-amqp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changelog
500 lines (345 loc) · 12.3 KB
/
Changelog
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
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
Changes
=======
py-amqp is fork of amqplib used by Kombu containing additional features and improvements.
The previous amqplib changelog is here:
http://code.google.com/p/py-amqplib/source/browse/CHANGES
.. _version-1.4.6:
1.4.6
=====
:release-date: 2014-08-11 06:00 P.M UTC
:release-by: Ask Solem
- Now keeps buffer when socket times out.
Fix contributed by Artyom Koval.
- Adds ``Connection.Transport`` attribute that can be used to specify
a different transport implementation.
Contributed by Yury Selivanov.
.. _version-1.4.5:
1.4.5
=====
:release-date: 2014-04-15 09:00 P.M UTC
:release-by: Ask Solem
- Can now deserialize more AMQP types.
Now handles types ``short string``, ``short short int``,
``short short unsigned int``, ``short int``, ``short unsigned int``,
``long unsigned int``, ``long long int``, ``long long unsigned int``
and ``float`` which for some reason was missing, even in the original
amqplib module.
- SSL: Workaround for Python SSL bug.
A bug in the python socket library causes ``ssl.read/write()``
on a closed socket to raise :exc:`AttributeError` instead of
:exc:`IOError`.
Fix contributed by Craig Jellick.
- ``Transport.__del_`` now handles errors occurring at late interpreter
shutdown (Issue #36).
.. _version-1.4.4:
1.4.4
=====
:release-date: 2014-03-03 04:00 P.M UTC
:release-by: Ask Solem
- SSL transport accidentally disconnected after read timeout.
Fix contributed by Craig Jellick.
.. _version-1.4.3:
1.4.3
=====
:release-date: 2014-02-09 03:00 P.M UTC
:release-by: Ask Solem
- Fixed bug where more data was requested from the socket
than was actually needed.
Contributed by Ionel Cristian Mărieș.
.. _version-1.4.2:
1.4.2
=====
:release-date: 2014-01-23 05:00 P.M UTC
- Heartbeat negotiation would use heartbeat value from server even
if heartbeat disabled (Issue #31).
.. _version-1.4.1:
1.4.1
=====
:release-date: 2014-01-14 09:30 P.M UTC
:release-by: Ask Solem
- Fixed error occurring when heartbeats disabled.
.. _version-1.4.0:
1.4.0
=====
:release-date: 2014-01-13 03:00 P.M UTC
:release-by: Ask Solem
- Heartbeat implementation improved (Issue #6).
The new heartbeat behavior is the same approach as taken by the
RabbitMQ java library.
This also means that clients should preferably call the ``heartbeat_tick``
method more frequently (like every second) instead of using the old
``rate`` argument (which is now ignored).
- Heartbeat interval is negotiated with the server.
- Some delay is allowed if the heartbeat is late.
- Monotonic time is used to keep track of the heartbeat
instead of relying on the caller to call the checking function
at the right time.
Contributed by Dustin J. Mitchell.
- NoneType is now supported in tables and arrays.
Contributed by Dominik Fässler.
- SSLTransport: Now handles ``ENOENT``.
Fix contributed by Adrien Guinet.
.. _version-1.3.3:
1.3.3
=====
:release-date: 2013-11-11 03:30 P.M UTC
:release-by: Ask Solem
- SSLTransport: Now keeps read buffer if an exception is raised
(Issue #26).
Fix contributed by Tommie Gannert.
.. _version-1.3.2:
1.3.2
=====
:release-date: 2013-10-29 02:00 P.M UTC
:release-by: Ask Solem
- Message.channel is now a channel object (not the channel id).
- Bug in previous version caused the socket to be flagged as disconnected
at EAGAIN/EINTR.
.. _version-1.3.1:
1.3.1
=====
:release-date: 2013-10-24 04:00 P.M UTC
:release-by: Ask Solem
- Now implements Connection.connected (Issue #22).
- Fixed bug where ``str(AMQPError)`` did not return string.
.. _version-1.3.0:
1.3.0
=====
:release-date: 2013-09-04 02:39 P.M UTC
:release-by: Ask Solem
- Now sets ``Message.channel`` on delivery (Issue #12)
amqplib used to make the channel object available
as ``Message.delivery_info['channel']``, but this was removed
in py-amqp. librabbitmq sets ``Message.channel``,
which is a more reasonable solution in our opinion as that
keeps the delivery info intact.
- New option to wait for publish confirmations (Issue #3)
There is now a new Connection ``confirm_publish`` that will
force any ``basic_publish`` call to wait for confirmation.
Enabling publisher confirms like this degrades performance
considerably, but can be suitable for some applications
and now it's possible by configuration.
- ``queue_declare`` now returns named tuple of type
:class:`~amqp.protocol.basic_declare_ok_t`.
Supporting fields: ``queue``, ``message_count``, and
``consumer_count``.
- Contents of ``Channel.returned_messages`` is now named tuples.
Supporting fields: ``reply_code``, ``reply_text``, ``exchange``,
``routing_key``, and ``message``.
- Sockets now set to close on exec using the ``FD_CLOEXEC`` flag.
Currently only supported on platforms supporting this flag,
which does not include Windows.
Contributed by Tommie Gannert.
.. _version-1.2.1:
1.2.1
=====
:release-date: 2013-08-16 05:30 P.M UTC
:release-by: Ask Solem
- Adds promise type: :meth:`amqp.utils.promise`
- Merges fixes from 1.0.x
.. _version-1.2.0:
1.2.0
=====
:release-date: 2012-11-12 04:00 P.M UTC
:release-by: Ask Solem
- New exception hierarchy:
- :class:`~amqp.AMQPError`
- :class:`~amqp.ConnectionError`
- :class:`~amqp.RecoverableConnectionError`
- :class:`~amqp.ConsumerCancelled`
- :class:`~amqp.ConnectionForced`
- :class:`~amqp.ResourceError`
- :class:`~IrrecoverableConnectionError`
- :class:`~amqp.ChannelNotOpen`
- :class:`~amqp.FrameError`
- :class:`~amqp.FrameSyntaxError`
- :class:`~amqp.InvalidCommand`
- :class:`~amqp.InvalidPath`
- :class:`~amqp.NotAllowed`
- :class:`~amqp.UnexpectedFrame`
- :class:`~amqp.AMQPNotImplementedError`
- :class:`~amqp.InternalError`
- :class:`~amqp.ChannelError`
- :class:`~RecoverableChannelError`
- :class:`~amqp.ContentTooLarge`
- :class:`~amqp.NoConsumers`
- :class:`~amqp.ResourceLocked`
- :class:`~IrrecoverableChannelError`
- :class:`~amqp.AccessRefused`
- :class:`~amqp.NotFound`
- :class:`~amqp.PreconditionFailed`
.. _version-1.1.0:
1.1.0
=====
:release-date: 2013-11-08 10:36 P.M UTC
:release-by: Ask Solem
- No longer supports Python 2.5
- Fixed receiving of float table values.
- Now Supports Python 3 and Python 2.6+ in the same source code.
- Python 3 related fixes.
.. _version-1.0.13:
1.0.13
======
:release-date: 2013-07-31 04:00 P.M BST
:release-by: Ask Solem
- Fixed problems with the SSL transport (Issue #15).
Fix contributed by Adrien Guinet.
- Small optimizations
.. _version-1.0.12:
1.0.12
======
:release-date: 2013-06-25 02:00 P.M BST
:release-by: Ask Solem
- Fixed another Python 3 compatibility problem.
.. _version-1.0.11:
1.0.11
======
:release-date: 2013-04-11 06:00 P.M BST
:release-by: Ask Solem
- Fixed Python 3 incompatibility in ``amqp/transport.py``.
.. _version-1.0.10:
1.0.10
======
:release-date: 2013-03-21 03:30 P.M UTC
:release-by: Ask Solem
- Fixed Python 3 incompatibility in ``amqp/serialization.py``.
(Issue #11).
.. _version-1.0.9:
1.0.9
=====
:release-date: 2013-03-08 10:40 A.M UTC
:release-by: Ask Solem
- Publisher ack callbacks should now work after typo fix (Issue #9).
- ``channel(explicit_id)`` will now claim that id from the array
of unused channel ids.
- Fixes Jython compatibility.
.. _version-1.0.8:
1.0.8
=====
:release-date: 2013-02-08 01:00 P.M UTC
:release-by: Ask Solem
- Fixed SyntaxError on Python 2.5
.. _version-1.0.7:
1.0.7
=====
:release-date: 2013-02-08 01:00 P.M UTC
:release-by: Ask Solem
- Workaround for bug on some Python 2.5 installations where (2**32) is 0.
- Can now serialize the ARRAY type.
Contributed by Adam Wentz.
- Fixed tuple format bug in exception (Issue #4).
.. _version-1.0.6:
1.0.6
=====
:release-date: 2012-11-29 01:14 P.M UTC
:release-by: Ask Solem
- ``Channel.close`` is now ignored if the connection attribute is None.
.. _version-1.0.5:
1.0.5
=====
:release-date: 2012-11-21 04:00 P.M UTC
:release-by: Ask Solem
- ``Channel.basic_cancel`` is now ignored if the channel was already closed.
- ``Channel.events`` is now a dict of sets::
>>> channel.events['basic_return'].add(on_basic_return)
>>> channel.events['basic_return'].discard(on_basic_return)
.. _version-1.0.4:
1.0.4
=====
:release-date: 2012-11-13 04:00 P.M UTC
:release-by: Ask Solem
- Fixes Python 2.5 support
.. _version-1.0.3:
1.0.3
=====
:release-date: 2012-11-12 04:00 P.M UTC
:release-by: Ask Solem
- Now can also handle float in headers/tables when receiving messages.
- Now uses :class:`array.array` to keep track of unused channel ids.
- The :data:`~amqp.exceptions.METHOD_NAME_MAP` has been updated for
amqp/0.9.1 and Rabbit extensions.
- Removed a bunch of accidentally included images.
.. _version-1.0.2:
1.0.2
=====
:release-date: 2012-11-06 05:00 P.M UTC
:release-by: Ask Solem
- Now supports float values in headers/tables.
.. _version-1.0.1:
1.0.1
=====
:release-date: 2012-11-05 01:00 P.M UTC
:release-by: Ask Solem
- Connection errors no longer includes :exc:`AttributeError`.
- Fixed problem with using the SSL transport in a non-blocking context.
Fix contributed by Mher Movsisyan.
.. _version-1.0.0:
1.0.0
=====
:release-date: 2012-11-05 01:00 P.M UTC
:release-by: Ask Solem
- Channels are now restored on channel error, so that the connection does not
have to closed.
.. _version-0.9.4:
Version 0.9.4
=============
- Adds support for ``exchange_bind`` and ``exchange_unbind``.
Contributed by Rumyana Neykova
- Fixed bugs in funtests and demo scripts.
Contributed by Rumyana Neykova
.. _version-0.9.3:
Version 0.9.3
=============
- Fixed bug that could cause the consumer to crash when reading
large message payloads asynchronously.
- Serialization error messages now include the invalid value.
.. _version-0.9.2:
Version 0.9.2
=============
- Consumer cancel notification support was broken (Issue #1)
Fix contributed by Andrew Grangaard
.. _version-0.9.1:
Version 0.9.1
=============
- Supports draining events from multiple channels (``Connection.drain_events``)
- Support for timeouts
- Support for heartbeats
- ``Connection.heartbeat_tick(rate=2)`` must called at regular intervals
(half of the heartbeat value if rate is 2).
- Or some other scheme by using ``Connection.send_heartbeat``.
- Supports RabbitMQ extensions:
- Consumer Cancel Notifications
- by default a cancel results in ``ChannelError`` being raised
- but not if a ``on_cancel`` callback is passed to ``basic_consume``.
- Publisher confirms
- ``Channel.confirm_select()`` enables publisher confirms.
- ``Channel.events['basic_ack'].append(my_callback)`` adds a callback
to be called when a message is confirmed. This callback is then
called with the signature ``(delivery_tag, multiple)``.
- Support for ``basic_return``
- Uses AMQP 0-9-1 instead of 0-8.
- ``Channel.access_request`` and ``ticket`` arguments to methods
**removed**.
- Supports the ``arguments`` argument to ``basic_consume``.
- ``internal`` argument to ``exchange_declare`` removed.
- ``auto_delete`` argument to ``exchange_declare`` deprecated
- ``insist`` argument to ``Connection`` removed.
- ``Channel.alerts`` has been removed.
- Support for ``Channel.basic_recover_async``.
- ``Channel.basic_recover`` deprecated.
- Exceptions renamed to have idiomatic names:
- ``AMQPException`` -> ``AMQPError``
- ``AMQPConnectionException`` -> ConnectionError``
- ``AMQPChannelException`` -> ChannelError``
- ``Connection.known_hosts`` removed.
- ``Connection`` no longer supports redirects.
- ``exchange`` argument to ``queue_bind`` can now be empty
to use the "default exchange".
- Adds ``Connection.is_alive`` that tries to detect
whether the connection can still be used.
- Adds ``Connection.connection_errors`` and ``.channel_errors``,
a list of recoverable errors.
- Exposes the underlying socket as ``Connection.sock``.
- Adds ``Channel.no_ack_consumers`` to keep track of consumer tags
that set the no_ack flag.
- Slightly better at error recovery