2012-07-26 20 views
10

試圖使用Tornado的異步函數 - 我想從我的處理程序中調用一個方法,但它一直告訴我它「有一個意外的關鍵字參數'回調'」。使用gen.task與Tornado進行一個簡單的函數

class MyHandler(tornado.web.RequestHandler): 

    @asynchronous 
    @gen.engine 
    def get(self): 
     response = yield gen.Task(self.dosomething, 'argument') 
     self.write(response) 
     self.finish() 

    def dosomething(self, myargument): 
     pass 

回答

20

非阻塞函數需要回調,它傳遞結果。

class MyHandler(tornado.web.RequestHandler): 

    @asynchronous 
    @gen.engine 
    def get(self): 
     response = yield gen.Task(self.dosomething, 'argument') 
     self.write(response) 
     self.finish() 

    def dosomething(self, myargument, callback): 
     return callback(myargument) 
+0

謝謝!我希望錯誤信息表明它錯過了,而不是它發現了'回調'。歡呼:) – 2012-07-27 08:28:21

+0

嗨,我想知道你是如何使dosomething充當非阻塞?你是否實現了任何線程/其他機制,以便它不會阻塞? – giga 2014-01-23 05:23:33

相關問題