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
nameparameter, 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.