Morepath 中的 Pymitter 集成
项目描述
more.emit: Morepath 中的 pymitter 集成
这个包为 pymitter 提供了 Morepath集成。
pymitter是扩展 Node.js EventEmitter 2 方法的 Python 端口,提供命名空间、通配符和 TTL。
快速开始
安装more.emit:
$ pip install -U more.emit
从 EmitApp 扩展您的 App 类:
from more.pony import EmitApp
class App(EmitApp):
pass
现在您可以定义信号:
from .app import App
@App.signal.on('myevent')
def handler1(arg, request):
print(request)
print('handler1 called with', arg)
@App.signal.on('myevent')
def handler2(arg, request):
print('handler2 called with', arg)
例如,您可以从视图中发出信号:
@App.json(model=Root)
def root_view(self, request):
request.app.signal.emit('myevent', 'foo', request)
return {
'name': 'Root'
}
例子
在用户创建和用户更新时发出信号以发送确认电子邮件的示例。此示例使用more.pony。
信号.py
from .app import App
@App.signal.on('user.email_updated')
def send_confirmation_email(user, request):
mailer = request.app.service(name='mailer')
mailer.send_confirmation_email(user, request)
视图.py
@App.json(model=UserCollection, request_method='POST')
def user_collection_add(self, request):
email = request.json['email']
if not User.exists(email=email):
user = self.add(email=email)
@request.after
def after(response):
request.app.signal.emit('user.email_updated', user, request)
response.status = 201
else:
@request.after
def after(response):
response.status = 409
return {
'validationError': 'Email already exists'
}
@App.json(model=User, request_method='PUT')
def user_update(self, request):
if 'email' in request.json and User.exists(email=request.json['email']):
@request.after
def after(response):
response.status = 409
return {
'validationError': 'Email already exists'
}
else:
self.update(request.json)
if 'email' in request.json:
self.email_confirmed = False
@request.after
def after(response):
request.app.signal.emit('user.email_updated', self, request)
变化
0.2 (2020-04-26)
已移除:移除了对 Python 2 的支持。
如果你想使用这个版本,你必须升级到 Python 3。
添加了对 Python 3.6、3.7 和 3.8 以及 PyPy 3.6 的支持。
将 Python 3.7 设为默认测试环境。
添加黑色代码格式化程序的集成。
0.1 (2017-04-22)
首次公开发布。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
more.emit-0.2.tar.gz
(5.0 kB
查看哈希)
内置分布
more.emit-0.2-py2.py3-none-any.whl
(5.0 kB
查看哈希)