2012-06-26 69 views
0

我正在寫一個龍捲風web服務器,我試圖阻止它在一個函數上被阻塞。如何編寫一個可以同時接受多個客戶端的龍捲風web服務器?

class TokenHandler(tornado.web.RequestHandler): 
    @tornado.web.asynchronous 
    def post(self): 
     global t 
     email = self.get_argument("text") 
     thread = MetaToken.ExeThread(email,t,self._on_response) 
     thread.start() 
     #data = t.analyze(email) 


    def _on_response(self,json): 
     self.write(json) 
     self.finish() 

分析在t中被調用,可能需要幾秒鐘才能完成。只要其他客戶請求可以同時處理,我也可以。這在大部分情況下工作,但會在流關閉的某些連接上發生錯誤。

+0

如果不知道'Metatoken.ExeThread'如何工作,很難調試你的程序。什麼是全球性的't'變數?難道後續的請求會使用相同的全局變量,並與回調混淆,導致「流關閉」錯誤? – lbolla

回答

0

不要用龍捲風這樣的線程!

如果您有繁重的任務需要線程 - 使用celery。 如果任務很輕 - 只需將它給gen

相關問題