Ich baue einen Server auf sockjs-tornado und frage mich, wie man den asynchronen HTTP-Client von Tornado nutzen kann - oder andere asynchrone Einrichtungen für Tornado wie asyncmongo, tornado-redis usw. Offenbar ist es nicht möglich, den tornado.web.asynchronous
& tornado.gen.engine
Dekorateure für Zufallsmethoden. Wenn ich also asynchrone Mongo/HTTP/Redis-Aufrufe aus SockJSConnection's on_message()
Wie würde ich das tun?
Antwort
Zu viele Anzeigen?Alles, was Sie tun müssen, ist eine Methode (oder eine Funktion) zu erstellen, die von tornado.gen decorator dekoriert wird
Ein kleiner Überblick zur Veranschaulichung, wie man es machen kann: https://gist.github.com/3708549
Wenn Sie das Beispiel ausführen und die Serverkonsole überprüfen, sehen Sie folgende Ausgabe:
1 - Anfrage stellen
2 - Zurückgegeben von on_message
... leichte Verzögerung ...
3 - Gesendete Daten an den Kunden
Dadurch wird ioloop nicht blockiert und der HTTP-Aufruf erfolgt im Hintergrund.