API Reference

class flask_dramatiq.Dramatiq

Flask extension bridging Dramatiq broker and Flask app.

Dramatiq API is eager. Broker initialisation precede actor declaration. This breaks application factory pattern and other way to initialize configuration after import.

This class enables lazy initialization of Dramatiq. Actual Dramatiq broker is instanciated only once Flask app is created.

actor(fn=None, **kw)

Register a callable as Dramatiq actor.

This decorator lazily register a callable as a Dramatiq actor. The actor can’t be called before init_app() is called.

Parameters:

kw – Keywords argument passed to dramatiq.actor().

init_app(app: Flask)

Initialize extension for one Flask application

This method triggers Dramatiq broker instanciation and effective actor registration.

__init__(app=None, broker_cls='dramatiq.brokers.rabbitmq:RabbitmqBroker', name='dramatiq', config_prefix=None, middleware=None)
App:

Flask application if created. See init_app().

Parameters:
  • broker_cls – Default Dramatiq broker class. Overridable by Flask configuration.

  • name – Unique identifier for multi-broker app.

  • config_prefix – Flask configuration option prefix for this broker. By default, it is derived from name parameter, capitalized.

  • middleware – List of Dramatiq middleware instances to override Dramatiq defaults.

Flask-Dramatiq always prepend a custom middleware to the middleware stack that setup Flask context. This way, every middleware can use Flask app context.

classmethod __new__(*args, **kwargs)

Periodiq helpers

Periodiq is a simple scheduler for Dramatiq. Theses attributes are exposed in extension namespace as a graceful helper to access periodiq API.

Dramatiq.cron
Dramatiq.PeriodiqMiddleware

Exemple:

from flask_dramatiq import Dramatiq

dramatiq = Dramatiq(middleware=[PeriodiqMiddleware()])

@dramatiq.actor(periodic=dramatiq.cron('0 * * * *'))
def hourly():
    ...

See periodiq project for details.