Python Pyramid - 事件



Pyramid 应用在其生命周期中会发出各种事件。虽然这些事件通常不需要使用,但是通过正确处理这些事件可以执行稍微高级的操作。

只有当您使用订阅者函数注册 Pyramid 框架广播的事件时,该事件才可用。发出的事件必须用作订阅者函数的参数。

def mysubscriber(event):
   print("new request")

但是,只有当使用add_subscriber()方法将其添加到应用程序的配置中时,订阅者函数才能运行,如下所示:

在下面的代码片段中,应用程序被配置为在发出NewRequest对象时调用订阅者函数。

from pyramid.events import NewRequest
config.add_subscriber(mysubscriber, NewRequest)

还有一个@subscriber()装饰器用于配置事件。

from pyramid.events import NewRequest
from pyramid.events import subscriber

@subscriber(NewRequest)
def mysubscriber(event):
   print ("new request")

与装饰器视图配置一样,这里也必须执行config.scan()才能使装饰器生效。

如前所述,Pyramid 应用发出各种事件类型。这些事件类可在pyramid.event模块中找到。它们列在下面:

  • ApplicationCreated - 当调用 Configurator 类的 config.make_wsgi_app() 方法以返回 WSGI 应用程序对象时,就会传输此事件。

  • NewRequest - 每当 Pyramid 应用程序开始处理传入请求时,都会发出此事件类的一个对象。此对象具有一个request属性,该属性是由 WSGI 环境字典提供的请求对象。

  • ContextFound - 应用程序的路由器遍历所有路由并找到与 URL 模式的适当匹配。这就是 ContextFound 类对象实例化的时候。

  • BeforeTraversal - 在 Pyramid 路由器尝试查找路由对象之后但执行任何遍历或视图代码之前,会发出此类的实例作为事件。

  • NewResponse - 正如名称所示,每当任何 Pyramid 视图可调用对象返回响应时,都会引发此事件。此对象具有request和response属性。

  • BeforeRender - 在调用渲染器之前,会将此类型的对象作为事件传输。此事件的订阅者函数可以访问应用程序的全局数据(以 dict 对象的形式),并可以修改一个或多个键的值。

广告
© . All rights reserved.