Heim > Artikel > Backend-Entwicklung > Eine Einführung in Asynchronität und Koroutineisierung bei der Entwicklung von Tornado-Websites mit Python
Tornado bietet zwei Möglichkeiten, den Synchronisierungsprozess zu ändern:
Asynchron: Verwenden Sie den Dekorator @tornado.web.asynchronous für die RequestHandler-Verarbeitungsfunktion, um den Standardsynchronisierungsmechanismus auf asynchron zu ändern Mechanismus. Diese Methode ist abgelaufen.
Koroutineisierung: Verwenden Sie den @tornado.gen.coroutine-Dekorator für die RequestHandler-Verarbeitungsfunktion, um den Standardsynchronisationsmechanismus in den Coroutine-Mechanismus zu ändern.
1. Asynchronisierung
Diese Methode ist abgelaufen und wird nicht erneut beschrieben.
2. Coroutineisierung
Tornado-Coroutine kombiniert die Vorteile der synchronen Verarbeitung und der asynchronen Verarbeitung, macht den Code klar und leicht verständlich und kann sich an die hohe Geschwindigkeit anpassen Verarbeitung großer Kundenanfragen.
Code:
import tornado.web import tornado.httpclient from tornado.web import Application import tornado.ioloop class MainHandler(tornado.web.RequestHandler): @tornado.gen.coroutine def get(self): http=tornado.httpclient.AsyncHTTPClient() response=yield http.fetch("http://www.baidu.com") self.write(response.body) if __name__ == '__main__': app=Application([ ("/",MainHandler) ]) app.listen("8888") tornado.ioloop.IOLoop.current().start()
Die wichtigsten technischen Punkte von Coroutine sind wie folgt:
Verwenden Sie tornado.gen.coroutine, um get() und von MainHandler zu dekorieren post() und andere Verarbeitungsfunktionen.
Verwenden Sie asynchrone Objekte, um zeitaufwändige Vorgänge abzuwickeln, wie in diesem Beispiel den AsyncHTTPClient.
Rufen Sie das Schlüsselwort yield auf, um das Verarbeitungsergebnis des asynchronen Objekts zu erhalten.
Das obige ist der detaillierte Inhalt vonEine Einführung in Asynchronität und Koroutineisierung bei der Entwicklung von Tornado-Websites mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!