2009-06-29 6 views
2

Wie kann ich einen Haken vor und nach der Verarbeitung einer Anfrage auf twisted.web hinzufügen (twisted.web2 ist auch in Ordnung)? Das Äquivalent von Webpy's:Wie man Haken in twisted.web (oder twisted.web2) hinzufügt?

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

Vielen Dank!

+0

Können Sie Hintergrundinformationen dazu liefern, warum Sie * dies * wollen? Ich habe die Dokumentation für add_processor von web.py gelesen, aber es ist ziemlich dünn. Es gibt ein paar verschiedene Punkte in twisted.web, wo Sie eine Funktion anheften könnten, die aufgerufen werden würde. Welches du willst, hängt weitgehend davon ab, was du damit machen willst. – Glyph

Antwort

1

Ein Ansatz, den Twisted Web ermöglicht, ist das Einfügen einer zusätzlichen Ressource in die Ressourcenhierarchie, deren einziger Zweck darin besteht, benutzerdefinierte Hooks auszuführen, anstatt ein Segment der Anforderungs-URL tatsächlich wie Ressourcen zu behandeln.

Sie können eine Implementierung dieses Ansatzes in twisted/web/_auth/wrapper.py finden, die die Ressource HTTPAuthSessionWrapper implementiert (öffentlich in twisted.web.guard verfügbar gemacht). Beachten Sie die erste Zeile von getChildWithDefault, die sicherstellt, dass die Ressource eines der Anforderungssegmente nicht verwendet. Dies ermöglicht es, in der Ressourcenhierarchie zu sitzen, das Verhalten zu ändern, aber ansonsten nicht die Art und Weise zu ändern, in der URLs ausgelöst werden.

Verwandte Themen