2012-07-26 7 views
10

ちょうどTornadoの非同期関数を使用しようとしています - 私はハンドラからメソッドを呼び出したいのですが、予期せぬキーワード引数 'コールバック'があります。単純な関数のためのgen.taskの使用

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

ありがとう!私は、エラーメッセージが、それが欠落していたことを示すだろう、それは 'コールバック'が見つかりませんでした。乾杯:) –

+0

こんにちは、私はあなたが実際にどのようにnon-blockingとして行動するdosomethingを作ったか知りたいですか?ブロックされないようにスレッド/その他のメカニズムを実装しましたか? – giga

関連する問題