2012-07-26 13 views
10

Sadece Tornado'nun async işlevlerini kullanmaya çalışıyorum - İşleyiciden bir yöntem çağırmak istiyorum, ancak bana "beklenmedik bir anahtar kelime argümanı 'geri çağrısı" olduğunu söylüyor.Basit bir işlev için Tornado ile gen.task kullanarak

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 

cevap

20

Engellenmeyen işlev, sonucun geçtiği yerlerde geri arama gerektirir.

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

Teşekkürler! Hata mesajının eksik olduğunu göstermesini isterdim, bir 'geri arama' bulduğu için değil. Şerefe :) –

+0

Merhaba, aslında engellemeyi engelleyici bir şey yaptığınızı bilmek isterim. Hiçbir iş parçacığı/diğer mekanizmayı engellemediniz mi? – giga

İlgili konular