2012-07-26 4 views
10

Nur versuchen, die asynchronen Funktionen von Tornado zu verwenden - Ich möchte eine Methode von meinem Handler aufrufen, aber es sagt mir, dass es "ein unerwartetes Schlüsselwort Argument 'Callback'".Verwendung von gen.task mit Tornado für eine einfache Funktion

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 

Antwort

20

Nicht-blockierende Funktion erfordert Rückruf, wo sie das Ergebnis weitergeben.

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

Danke! Ich wünschte, die Fehlermeldung würde anzeigen, dass es fehlte, nicht, dass es einen "Rückruf" gefunden hat. Prost :) –

+0

Hallo, ich würde gerne wissen, wie Sie tatsächlich etwas machend als nicht blockierend gemacht haben? Haben Sie einen Threading/anderen Mechanismus implementiert, so dass er nicht blockiert? – giga

Verwandte Themen