485 lines
12 KiB
Plaintext
485 lines
12 KiB
Plaintext
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.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: 2012-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
|