2017-03-16 154 views
0

我有一個自定義工具,我已經掛鉤before_finalize鉤點。我想要相同的工具運行'after_error_response'鉤點。有沒有辦法做到這一點?如何在Cherrypy中將工具掛鉤到多個掛鉤點?

這是我如何創建我的工具

class MyTool(cherrypy.Tool): 
    def __init__(self): 
     cherrypy.Tool.__init__(self, 'before_finalize', 
           self._do_something, 
           priority=100) 

cherrypy.tools.mytool = MyTool() 
+1

https://github.com/cherrypy/cherrypy/blob/master/cherrypy/_cptools.py#L152 – webKnjaZ

+1

嘗試重新定義'_setup()' – webKnjaZ

+0

@webKnjaZ謝謝。試過了,它工作。只是重載了_setup方法並從那裏調用了cherrypy.serving.request.hooks.attach('after_error_response',self._do_something,priority = 100)。也確保打電話超級。 – rdp

回答

0

你可以參數化掛鉤點和以不同的名稱分配給它。

cherrypy.tools.mytool = MyTool('before_finalize') 
cherrypy.tools.mytool2 = MyTool('after_error_response') 

要在多發點註冊相同的工具,你就必須重寫Tool._setup本身。替換:

cherrypy.serving.request.hooks.attach(self._point, self.callable, 
              priority=p, **conf) 

調用每個點。

+0

我應該在我的問題中提到。我不想有兩種不同的工具。基本上,當我做cherrypy.tools.mytool.on:真的,我希望它的工具是'before_finalize'和'after_error_response' – rdp