增加了对“戏剧化”任务处理库支持的烧瓶扩展
Flask-Melodramatiq的Python项目详细描述
flask情节剧是一个Flask扩展,它增加了对 任务处理库。
Dramatiq是一个伟大的图书馆,而flask情节剧则尽力不 迫使你改变与之互动的方式 它。Flask情节剧定义了代理类型周围的薄包装 在Dramatiq中可用,因此Dramatiq的API的所有功能都将保留 对你有用。
例如:
import dramatiq from flask import Flask from flask_melodramatiq import RabbitmqBroker app = Flask(__name__) broker = RabbitmqBroker(app) dramatiq.set_broker(broker) @dramatiq.actor def task(): print('Snakes appreciate good theatrical preformace.')
或者,如果您喜欢烧瓶应用程序工厂模式:
import dramatiq from flask import Flask from flask_melodramatiq import RabbitmqBroker broker = RabbitmqBroker() dramatiq.set_broker(broker) @dramatiq.actor def task(): print('Snakes appreciate good theatrical preformace.') def create_app(): app = Flask(__name__) broker.init_app(app) return app
在这些例子中,我们创建的broker实例(我们称之为 “懒惰的经纪人”)是真正的Dramatiq经纪人,可以使用 任何可以使用“本地”代理的地方。(它有 dramatiq.brokers.rabbitmq.RabbitmqBroker作为超类!)懒惰的 代理是薄包装,它添加了几个重要功能:
- 它们遵循烧瓶应用程序配置中的设置。
- init_app可以在之前或之后对它们调用。 已经确定了演员。
- 在执行过程中正确设置了烧瓶应用程序上下文 的任务。
- 他们很少增加方便的方法。(装饰符Broker.actordecorator 例如。)
配置
您可以通过传递 构造函数的关键字参数,或通过设置 应用程序中键集合DRAMATIQ_BROKER_*的值 配置。例如,您可以执行以下任一操作:
from flask_melodramatiq import RabbitmqBroker broker = RabbitmqBroker( url='amqp://mybroker:5672', confirm_delivery=True)
或者您可以将其放入应用程序配置:
DRAMATIQ_BROKER_URL = 'amqp://mybroker:5672' DRAMATIQ_BROKER_CONFIRM_DELIVERY = True
如果传递给构造函数的配置值不同 从app config中设置的值来看,后者优先。你 甚至可以在应用程序配置中设置/覆盖代理的类型:
from flask_melodramatiq import Broker broker = Broker() # Broker's type is not specified here.
相反,在app config中指定类型:
DRAMATIQ_BROKER_CLASS = 'StubBroker'
此功能在测试代码时非常有用。
启动工人
有了花瓶情节剧,你就拥有了戏剧的全部力量 随你处置。例如,为您的 您可以运行的代理实例:
$ dramatiq wsgi:broker
在wsgi.py中,您可能有这样的东西:
from myapp import create_app, broker app = create_app()
您可以拥有任意数量的代理实例,但您需要 用一个单独的命令启动每一个。