如何在CherryPy的执行异步后处理?(How to execute asynchronous p

2019-08-02 01:26发布

背景:假设你有一个标准的CherryPy招呼词应用:

   def index(self):
      return "Hello world!"
   index.exposed = True

愿与您做一些后期处理,即记录请求处理或只需登录一个事实,即我们是从特定的IP调用。 你会做什么可能是:

def index(self):
   self.RunMyPostProcessing()
   return "Hello world!"
index.exposed = True

然而,这将添加到您的请求处理时间。 (顺便说一句,而且很可能你会用装饰,甚至一些更复杂的方法,如果你想叫它每个功能)。

问:是否有建立一个全球性的线程知道队列(缓冲)到每个请求可以写消息(事件)需要被记录的方式,而一些神奇的功能会抓住它和后处理? 你知道这样的事情的模式?

我敢打赌,CherryPy的支持类似的东西:-)

先感谢您...

Answer 1:

“环球线程队列知道”被称为Queue.Queue。 我刚加入这个配方在http://tools.cherrypy.org/wiki/BackgroundTaskQueue



Answer 2:

由于我一直在寻找这一点,它现在已经过时,我认为有必要提供正确的(2012ish)的答案。 只需在该处理您的网址功能的开始补充一点:

cherrypy.request.hooks.attach('on_end_request', mycallbackfunction)

有一个在文档中的钩更多的相关信息,但它不是很清晰。



Answer 3:

一个on_end_request自定义工具可能是你想要的。



文章来源: How to execute asynchronous post-processing in CherryPy?