Change history — Carrot v0.4.1 documentation

### Navigation

- index
- modules |
- previous |
- Carrot v0.4.1 documentation »

# Change history

## 0.4.1 [2008-06-08 04:21 P.M CET] askh@opera.com

- Consumer/Publisher now correctly sets the encoder/decoder if they

    have been overriden by setting the class attribute.

## 0.4.0 [2008-06-06 01:39 P.M CET] askh@opera.com

IMPORTANT Please don’t use `Consumer.wait` in production. Use either of `Consumer.iterconsume` or `Consumer.iterqueue`.

IMPORTANT The `ack` argument to `Consumer.process_next` has been removed, use the instance-wide `auto_ack` argument/attribute instead.

IMPORTANT `Consumer.message_to_python` has been removed, use `message.decode()` on the returned message object instead.

IMPORTANT Consumer/Publisher/Messaging now no longer takes a backend instance, but a backend class, so the `backend` argument is renamed to `backend_cls`.

WARNING `Consumer.process_next` has been deprecated in favor of `Consumer.fetch(enable_callbacks=True)` and emits a `DeprecationWarning` if used.

> - `Consumer.iterconsume`: New sane way to use basic_consume instead of `Consumer.wait`:

>     (Consmer.wait now uses this behind the scenes, just wrapped around a highly unsafe infinite loop.)

> - Consumer: New options: `auto_ack` and `no_ack`. Auto ack means the

>     consumer will automatically acknowledge new messages, and No-Ack means it will disable acknowledgement on the server alltogether (probably not what you want)

> - `Consumer.iterqueue`: Now supports infinite argument, which means the

>     iterator doesn’t raise `StopIteration` if there’s no messages, but instead yields `None` (thus never ends)

> - message argument to consumer callbacks is now a

>     `carrot.backends.pyamqplib.Message` instance. See [GH #4]. Thanks gregoirecachet!

> - AMQPConnection, Consumer, Publisher and Messaging now supports

>     the with statement. They automatically close when the with-statement block exists.

> - Consumer tags are now automatically generated for each class instance,

>     so you should never get the “consumer tag already open” error anymore.

> - Loads of new unit tests.

## 0.4.0-pre7 [2009-06-03 05:08 P.M CET] askh@opera.com

> - Conform to pep8.py trying to raise our pypants score.
> - Documentation cleanup (thanks Rune Halvorsen)

## 0.4.0-pre6 [2009-06-03 04:55 P.M CET] askh@opera.com

> - exclusive implies auto_delete, not durable. Closes #2.

>     Thanks gregoirecachet

> - Consumer tags are now automatically generated by the class module,

>     name and a UUID.

> - New attribute `Consumer.warn_if_exists:`

>     If True, emits a warning if the queue has already been declared. If a queue already exists, and you try to redeclare the queue with new settings, the new settings will be silently ignored, so this can be useful if you’ve recently changed the routing_key attribute or other settings.

## 0.4.0-pre3 [2009-05-29 02:27 P.M CET] askh@opera.com

> - Publisher.send: Now supports message priorities (a number between `0`

>     and `9`)

> - Publihser.send: Added `routing_key` keyword argument. Can override

>     the routing key for a single message.

> - Publisher.send: Support for the `immediate` and `mandatory` flags.

## 0.4.0-pre2 [2009-05-29 02:27 P.M CET] askh@opera.com

> - AMQPConnection: Added `connect_timeout` timeout option, which is

>     the timeout in seconds before we exhaust trying to establish a connection to the AMQP server.

## 0.4.0-pre1 [2009-05-27 04:27 P.M CET] askh@opera.com

> - This version introduces backends. The consumers and publishers

>     all have an associated backend. Currently there are two backends available; `pyamqlib` and `pyqueue`. The `amqplib` backend is for production use, while the `Queue` backend is for use while unit testing.

> - Consumer/Publisher operations no longer re-establishes the connection if the connection has been closed.

> - `Consumer.next` has been deprecated for a while, and has now been removed.

> - Message objects now have a `decode` method, to deserialize the message body.

> - You can now use the Consumer class standalone, without subclassing, by registering callbacks by using `Consumer.register_callback`.

> - Ability to filter messages in `Consumer.discard_all`.

> - carrot now includes a basic unit test suite, which hopefully will

>     be more complete in later releases.

> - carrot now uses the Sphinx documentation system.

## 0.3.9 [2009-05-18 04:49 P.M CET] askh@opera.com

> - Consumer.wait() now works properly again. Thanks Alexander Solovyov!

## 0.3.8 [2009-05-11 02:14 P.M CET] askh@opera.com

> - Rearranged json module import order.

>     New order is cjson > simplejson > json > django.util.somplejson

> - _Backwards incompatible change:

>     Have to instantiate AMQPConnection object before passing it to consumers/publishers. e.g before when you did

>         >>> consumer = Consumer(connection=DjangoAMQPConnection)

> you now have to do

>     >>> consumer = Consumer(connection=DjangoAMQPConnection())

> or sometimes you might even want to share the same connection with publisher/consumer.

## 0.2.1 [2009-03-24 05:48 P.M CET] askh@opera.com

- Fix typo “package” -> “packages” in setup.py

## 0.2.0 [2009-03-24 05:23 P.M ]` askh@opera.com

- hasty bugfix release, fixed syntax errors.

## 0.1.0 [2009-03-24 05:16 P.M ]` askh@opera.com

- Initial release

### Navigation

- index
- modules |
- previous |
- Carrot v0.4.1 documentation »