如何在处理 twisted.web 上的请求之前和之后添加一个钩子(twisted.web2 也可以)?相当于 webpy 的:
app = web.application(urls, globals())
app.add_processor(web.loadhook(my_attach_callback))
app.add_processor(web.unloadhook(my_detach_callback))
谢谢!
Twisted Web 允许的一种方法是在资源层次结构中插入一个额外的资源,其唯一目的是运行您的自定义挂钩,而不是像资源通常那样实际处理请求 URL 的一部分。
您可以在twisted/web/_auth/wrapper.py中找到这种方法的实现,它实现了 HTTPAuthSessionWrapper 资源(在 twisted.web.guard 中公开公开)。请注意其中的第一行getChildWithDefault
确保资源不消耗其中一个请求段。这允许它位于资源层次结构中,修改行为,但不会改变 URL 的分派方式。