Dramatiq Versions Save

A fast and reliable background task processing library for Python 3.

v1.11.0

2 years ago

Added

  • dramatiq.Message.decode now raises a dramatiq.DecodeError on exception. (#375, @thomazthz)

Changed

  • The RabbitMQ broker moves messages that fail to decode to the DLQ. (#375, @thomazthz)

Fixed

  • The Redis broker is now more defensive in how it handles re-enqueueing messages. This should fix a potential race condition where a worker could hit its heartbeat timeout but still end up re-enqueueing messages (thus ending up with the same message id enqueued multiple times). (#266, #395)
  • A code path that could lead to an unbound variable error has now been fixed. (#382)
  • Deleting the connection off of a RabbitMQ broker now correctly closes it and its associated channel (if any) before removing it from the broker. (#381, #384)

v1.10.0

3 years ago

Added

  • The RabbitMQ broker dead message TTL can now be configured via the dramatiq_dead_message_ttl environment variable. (#354, @evstratbg)
  • The CLI now supports referencing a callable to set up the broker on worker startup. (#350)
  • The --worker-shutdown-timeout flag. (#330, @mic47)

Changed

  • The CLI raises an error when the --watch flag is set on unsupported platforms. (#326, #328, @CaselIT)

Fixed

  • The CLI now returns code 1 when one of the workers is killed by an unhandled signal. (#334, @omegacoleman)
  • The results middleware now gracefully handles actor-not-found errors during nack. (#336, #337, @AndreCimander)
  • A memory bloat issue with tasks that raise exceptions. (#351)
  • CI on Windows. (#371, @gdvalle)

v1.9.0

3 years ago

Added

  • A custom Redis connection can now be passed to the Redis broker via the new client keyword argument. (#274, @davidt99)
  • Message priority can now be changed in before_enqueue hooks. (#313, @thomazthz)
  • Support for storing actor exceptions. (#156)
  • Support for silent Retries. (#295)
  • Support for expected exceptions via the throws actor option. (#303, @takhs91)
  • Support for changing the consumer class in the RabbitMQ and Redis brokers. (#316, @AndreCimander)

Changed

  • Worker processes are no longer daemons. (#289, #294, @takhs91)

Fixed

  • A race condition during command line startup where the wrong exit codes could be returned when subprocesses failed. (#286)
  • A race condition between worker processes and fork processes during boot. (#297)
  • A logging race condition on Linux. (#171, #286)
  • fileno has been added to StreamablePipe. (#291, @takhs91)

v1.8.1

3 years ago

Fixed

  • An issue where an IndexError would be raised when multiple middleware containing fork functions were defined. (#271)

v1.8.0

3 years ago

Added

  • Support for forking and running arbitrary functions (so-called “fork functions”). (#127, #230)
  • The --fork-function flag.
  • The --skip-logging flag. (#263, @whalesalad)

Fixed

  • An issue where the max_age parameter to Callbacks was being ignored. (#240, @evstratbg)
  • An issue with delaying pipelines. (#264, @synweap15)
  • An issue where the master process would sometimes hang when stopped. (#260, @asavoy)
  • An issue where the RedisBroker could sometimes prefetch more messages than it was configured to. (#262, @benekastah)
  • The StubBroker now flushes its dead letter queue when its flush_all method is called. (#247, @CapedHero)
  • The RedisBroker now takes the max lua stack size into account. This should fix certain heisenbugs that folks have encountered with that broker. (#259, @benekastah)

v1.6.1

4 years ago

Added

  • RabbitmqBroker now supports multiple connection uris to be passed in via its url parameter. (#216, @wsantos)

Changed

  • Updated allowed version range for prometheus-client. (#219, @robinro)

v1.7.0

4 years ago

Added

  • Generic actors can now be passed custom actor registries. (#223, @jonathanlintott)
  • --use-spawn command line argument. (#227, #228, @jrusso1020)

Changed

  • Uncaught exceptions within workers are now logged as errors rather than warnings. (#221, @th0th)

v1.6.0

5 years ago

Added

  • dramatiq_queue_prefetch environment variable to control the number of messages to prefetch per worker thread. (#183, #184, @xelhark)
  • The RabbitMQ broker now retries the queue declaration process if an error occurs. (#179, @davidt99)
  • Support for accessing nested broker instances from the CLI. (#191, @bersace)
  • Support for eagerly raising actor exceptions in the joining thread with the StubBroker. (#195, #203)
  • Support for accessing the current message from an actor via CurrentMessage. (#208)

Changed

  • Pinned pika version >1.0,<2.0. (#202)

Fixed

  • An issue where workers would fail and never recover after the connection to Redis was severed. (#207)
  • pipe_ignore has been fixed to apply to the next message in line within a pipeline. (#194, @metheoryt)

v1.5.0

5 years ago

Added

  • The RabbitMQ broker now supports native message priorities. (#157, @davidt99)
  • Support for specifying the actor class to @actor. (#169, @gilbsgilbs)

Changed

  • Pika 0.13 is now required.

Fixed

  • Consumers are now stopped after workers finish running their tasks. (#160, @brownan)
  • Worker logging on Python 3.7 is no longer delayed.

v1.4.3

5 years ago

Fixed

  • Changed license classifier to the correct license. This is why you shouldn't publish changed before you've had coffee, folks!