Warning: This document is for an old version of Dramatiq. The latest version is v1.4.0.

Changelog

All notable changes to this project will be documented in this file.

1.2.0 – 2018-05-24

Added

Changed

Fixed

  • Module import path is now prepended to search path rather than appended. This fixes an issue where importing modules with the same name as modules from site-packages would end up importing the modules from site-packages. (#88)
  • |Prometheus| middleware no longer wipes the prometheus data directory on startup. This fixes an issue with exporting application metrics along with worker metrics.

Deprecated

  • requeue_{deadline,interval} parameters to RedisBroker. These two parameters no longer have any effect.

1.1.0 – 2018-04-17

Added

  • confirm_delivery parameter to RabbitmqBroker.
  • dead_message_ttl, requeue_deadline and requeue_interval parameters to RedisBroker.
  • url parameter to Redis rate limiter backend.
  • url parameter to Redis result backend.
  • timeout parameter to all the brokers’ join methods. (#57)
  • flush and flush_all methods to RedisBroker. (#62)
  • flush and flush_all methods to RabbitmqBroker. (#62)

Changed

  • Cleaned up command line argument descriptions.

Deprecated

  • URLRabbitmqBroker is deprecated. The RabbitmqBroker takes a url parameter so use that instead. URLRabbitmqBroker will be removed in version 2.0.

Fixed

  • rabbitmq and watch extra dependencies are only installed when they are explicitly required now. (#60, @rpkilby)
  • signal handling from the master process on FreeBSD 10.3. (#66)
  • reloading now uses sys.executable when exec’ing workers that were started with python -m dramatiq.
  • an issue that caused logging to fail when non-utf-8 characters were printed to stdout/err. (#63)
  • an issue with potentially drifting keys in the WindowRateLimiter. (#69, @gdvalle)

1.0.0 – 2018-03-31

Added

Changed

  • Dramatiq is now licensed under the LGPL.

Fixed

  • Passing time_limit in send_with_options. (#44)

0.20.0 – 2018-03-17

Added

  • --queues CLI argument. (#35)

Changed

  • Unhandled errors within workers now print the full stack trace. (#42)

0.19.1 – 2018-03-08

Fixed

0.19.0 – 2018-01-17

Added

Changed

  • RateLimitExceeded errors no longer log the full stack trace when raised within workers.
  • Consumer connection errors no longer dump a stack trace.
  • Consumers now wait exactly 3 seconds between retries after a connection error, rather than using exponential backoff.

0.18.0 – 2018-01-06

Added

  • pip install dramatiq[all] installs all deps.
  • --path command line argument. (#27)

Changed

  • pip install dramatiq now installs RabbitMQ and watch deps.

0.17.0 – 2017-12-30

Added

Fixed

  • Pinned pika version 0.11 to avoid an issue where passing heartbeat to RabbitmqBroker in get_broker would raise a TypeError. (#23, @chen2aaron)

0.16.0 – 2017-12-25

Added

Changed

  • Redis result backend is now considerably more resource-efficient (it no longer polls).
  • sys.std{err,out} are now redirected to stderr and line-buffered.

Fixed

  • TimeLimit middleware now uses a monotonic clock.

0.15.1 – 2017-12-08

Fixed

  • Autoreload now works under gevent.

0.15.0 – 2017-11-24

Added

  • Support for Results.
  • pool parameter to the Memcached rate limiter backend.
  • client parameter to the Redis rate limiter backend.
  • --watch-use-polling command line argument.

Fixed

  • Fixed bad file descriptor issue during RMQ broker shutdown under gevent.

0.14.0 – 2017-11-21

Added

Fixed

0.13.1 – 2017-11-17

Changed

  • Connection and import errors that occur during process boot now log stack traces (@rakanalh).
  • Added support for Python 3.5 (#7 by @jssuzanne).

0.13.0 – 2017-11-15

Added

0.12.1 – 2017-11-15

Fixed

  • An AssertionError after starting the consumer if RabbitMQ is not running (#10).

0.12.0 – 2017-11-14

Added

Fixed

  • Pending interrupt messages are now removed from pika’s queue before cancel is called. This fixes an issue where an AtrributeError was sometimes raised on worker shutdown.
  • Pika connection reset logs from the main thread are now hidden.
  • Distribution of dramatiq-gevent (#2).

0.11.0 – 2017-11-09

Added

Changed

  • Consumer reconnect backoff factor has been lowered from 10s to 100ms.
  • URLRabbitmqBroker is now a factory function that creates instances of RabbitmqBroker.

Fixed

  • Worker processes no longer use a spinlock to consume messages.
  • Consumers now use the same idle timeout as workers.
  • StubBroker no longer declares dead letter queues.

0.10.2 – 2017-11-06

Changed

  • pika is now pinned to >=0.10,<0.12.

0.10.1 – 2017-11-04

Added

  • More benchmarks.

Fixed

0.10.0 – 2017-10-30

Added

Changed

  • Implementation of the window rate limiter has been streamlined.
  • Redis requeue is now more efficient.
  • RabbitMQ enqueue is now resilient to disconnects.

Fixed

0.9.0 – 2017-10-20

Changed

  • Messages are no longer assigned new ids when they are re-enqueued. This makes tracking messages using middleware significantly easier.
  • The RedisBroker now assigns its own internal message ids.

0.8.0 – 2017-10-19

Changed

  • RabbitmqBroker no longer takes a ConnectionParameters param as input. Instead, it builds one based on kwargs.
  • exec is now used to reload the main process on source code changes when the --watch flag is enabled.

0.7.1 – 2017-10-08

Fixed

  • Lua files are now properly distributed with the package.

0.7.0 – 2017-09-13

Changed

  • Reworked scheduled messages to improve fairness. Messages are now re-enqueued on the broker once they hit their eta.
  • prometheus-client has been pinned to version 0.0.20.

0.6.1 – 2017-07-20

Fixed

  • A race condition with calls to cas in the memcached rate limiter backend.

0.6.0 – 2017-07-09

Added

0.5.2 – 2017-06-29

Changed

  • Changed the default max retries value from None to 20, meaning tasks are now retried for up to about 30 days before they’re dead-lettered by default.

0.5.1 – 2017-06-28

Removed

  • Dropped RabbitMQ heartbeat to avoid spurious disconnects.

0.5.0 – 2017-06-27

Added

  • Added dramatiq-gevent script.

Changed

  • Capped prefetch counts to 65k.