跳转到主要内容

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

signal.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)

view.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作为默认测试环境。

  • 添加了对Black代码格式化器的集成。

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 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面