Skip to main content
 首页 » 编程设计

python之如何在 twisted.web(或 twisted.web2)中添加钩子(Hook)

2025年05月04日30itcoder

如何在处理 twisted.web(twisted.web2 也可以)上的请求之前和之后添加钩子(Hook)?相当于 webpy 的:

app = web.application(urls, globals()) 
app.add_processor(web.loadhook(my_attach_callback)) 
app.add_processor(web.unloadhook(my_detach_callback)) 

谢谢!

请您参考如下方法:

Twisted Web 允许的一种方法是在资源层次结构中插入一个额外的资源,其唯一目的是运行您的自定义 Hook ,而不是像资源通常那样实际处理请求 URL 的一部分。

您可以在 twisted/web/_auth/wrapper.py 中找到此方法的实现它实现了 HTTPAuthSessionWrapper 资源(在 twisted.web.guard 中公开)。请注意 getChildWithDefault 的第一行,它确保资源不会消耗其中一个请求段。这允许它位于资源层次结构中,修改行为,但不会以其他方式改变 URL 的分派(dispatch)方式。