Pyramid / Pylons中的后处理请求事件

时间:2011-02-15 23:45:55

标签: python pylons pyramid

是否有中间层的事件或某种工作,请求已经发送给用户,但是我们仍然有信息,以便我们以后可以在数据库上执行操作?

2 个答案:

答案 0 :(得分:2)

正如您可能已经知道的那样,您可以在请求处理之前执行http://docs.pylonsproject.org/projects/pyramid/1.0/narr/events.html#configuring-an-event-listener-imperatively

要处理请求后的内容(不使用中间件),您需要在请求中添加完成的回调,这将在此处演示: http://docs.pylonsproject.org/projects/pyramid/1.0/api/request.html#pyramid.request.Request.add_finished_callback

当然,完成的回调仅发生在一个请求的范围内。您可以通过组合这两个来处理所有请求:

from pyramid.events import NewRequest

def do_something(request):
    # do something here
    pass

def setup_post_request(event):
    event.request.add_finished_callback(do_something)

config.add_subscriber(setup_post_request, NewRequest)

答案 1 :(得分:1)

在Pylons中,每个控制器都可以有之前之后的方法,您可以定义在调用控制器方法之前/之后调用的方法。

还有lib / base.py文件,其中包含控制器调用,您可以在那里添加一些自定义代码,但是每次请求都会调用它,如果您的代码产生一些错误,则会很危险。

我不确定金字塔。

如果您在自定义中间件中执行操作,则可以访问请求和响应对象,但不能访问其他材料。理论上你可以解析数据库设置的.ini配置等等,但如果它真的是应用程序的一部分,那么我会坚持到那里。