dramatiq

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

LGPL-3.0 License

Downloads
247.7K
Stars
4.1K
Committers
110

Bot releases are hidden (Show)

dramatiq - v1.17.0 Latest Release

Published by Bogdanp 5 months ago

Added

  • Middleware hooks for after consumer & worker thread boot. (#619, @kamalmarhubi)
  • Type hints for awaitable actors. (#621, @DABND19)

Changed

  • The watch extras now require Watchdog version 4.0+.

Fixed

  • The python_requires version in setup.py. (#606, @niccodemus)
  • The result middleware now takes message options into account. (#612, @huwylphimet)
dramatiq - v1.16.0

Published by Bogdanp 9 months ago

Fixed

  • The CurrentMessage middleware now works under AsyncIO. (#586, #593, @pahrohfit)
  • Improved logging behavior under different buffer modes. (#596, @5tefan)

Added

  • CLI watcher now supports setting include and exclude patterns (#594, @nhairs)
dramatiq - v1.15.0

Published by Bogdanp 12 months ago

Fixed

Added

Changed

  • Filesystem watcher no longer reloads dramatiq on file open events. (#552, @seanpile)
  • The version bound on redis-py has been increased to include version 5.0. (#567, @scott-8)
dramatiq - v1.14.2

Published by Bogdanp over 1 year ago

Fixed

  • Restored namedtuple instance methods on Message. (#538)
dramatiq - v1.14.1

Published by Bogdanp over 1 year ago

Fixed

  • Added missing py.typed file to distributions. (#531)
dramatiq - v1.14.0

Published by Bogdanp over 1 year ago

Note: this version was released on 2023-02-05. I am just now backfilling a GitHub Release for it.

Removed

  • Dropped Python 3.6 support as it reached end-of-life.

Changed

  • Added Python 3.11 support to CI builds. (#511, @FinnLidbetter)
  • Improved typing support. Message is now a dataclass, but it should be compatible with the previous namedtuple-based implementation. (#512, #513, #515, #516, @orsinium)
dramatiq - v1.13.0

Published by Bogdanp over 2 years ago

Note: this version was released on 2022-04-02. I am just now backfilling a GitHub Release for it.

Fixed

Changed

  • Typing support has been improved. (#482, @staticdev)
  • The default broker now falls back to Redis if the RabbitMQ extras are not installed, in an attempt to make the getting started process easier. (#483, #486, @kurtmckee)
dramatiq - v1.12.3

Published by Bogdanp almost 3 years ago

Fixed

  • An issue where signals remained blocked after worker process boot. (#465, #466, @FinnLidbetter)
dramatiq - v1.12.2

Published by Bogdanp almost 3 years ago

Fixed

  • An issue where stopping the process too quickly after boot could lead to an AttributeError. (#463, #464, @FinnLidbetter)
dramatiq - v1.12.1

Published by Bogdanp almost 3 years ago

Fixed

  • Actors and messages can now specify 0 backoff. (@FinnLidbetter, #438)
  • An issue where Redis message ids could be put back onto the queue after ack/nack. (#442, #444)

Removed

  • Dropped Python 3.5 support as it reached end-of-life.
dramatiq - v1.12.0

Published by Bogdanp almost 3 years ago

Added

  • RabbitMQ messages now have a redelivered flag. (#405, @nffdiogosilva)
  • Time limits now work under gevent. (#408, @FinnLidbetter)
  • Shutdown notifications now work under gevent. (#426, @FinnLidbetter)

Changed

  • The watchdog library is no longer being pinned to a specific version. (#428)
  • The Redis broker now limits unpacks to half the size of the Lua stack. (#433, #434, @ethervoid)

Fixed

  • Async exceptions now correctly set the thread id on Python 3.7 and up. (#419, #420, @FinnLidbetter)
dramatiq - v1.11.0

Published by Bogdanp over 3 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)
dramatiq - v1.10.0

Published by Bogdanp almost 4 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)
dramatiq - v1.9.0

Published by Bogdanp almost 4 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)
dramatiq - v1.8.1

Published by Bogdanp almost 4 years ago

Fixed

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

Published by Bogdanp almost 4 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)
dramatiq - v1.6.1

Published by Bogdanp about 5 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)
dramatiq - v1.7.0

Published by Bogdanp about 5 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)
dramatiq - v1.6.0

Published by Bogdanp over 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)
dramatiq - v1.5.0

Published by Bogdanp over 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.