簡體   English   中英

如何在 CherryPy 中執行異步后處理?

[英]How to execute asynchronous post-processing in CherryPy?

上下文:假設您有一個標准的 CherryPy hello word 應用程序:

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

並且您想進行一些后處理,即記錄請求處理或僅記錄我們從特定 IP 調用的事實。 你可能會做的是:

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

但是,這會增加您的請求處理時間。 (順便說一句。如果你想在每個函數上調用它,你可能會使用裝飾器,或者甚至一些更復雜的方法)。

問題:有沒有辦法創建一個全局線程感知隊列(緩沖區),每個請求都可以向其中寫入需要記錄的消息(事件),而一些魔法函數會抓取它並進行后處理? 你知道這種事情的模式嗎?

我敢打賭 CherryPy 支持類似的東西 :-)

先感謝您...

“全局線程感知隊列”稱為 Queue.Queue。

on_end_request自定義工具可能就是您想要的。

當我正在尋找這個並且它現在已經過時,我發現提供正確的(2012ish)答案很有用。 只需在處理您的 url 的函數的開頭添加它:

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

文檔中有更多關於鈎子的信息,但我不太清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM