Tornado には、同期プロセスを変更する 2 つの方法があります。
非同期: RequestHandler 処理関数に @tornado.web.asynchronous デコレータを使用して、デフォルトの同期メカニズムを変更します。 非同期に変更します。機構。このメソッドは有効期限が切れています。
コルーチン化: RequestHandler 処理関数に @tornado.gen.coroutine デコレータを使用して、デフォルトの同期メカニズムをコルーチン メカニズムに変更します。
1. 非同期
このメソッドは有効期限が切れているため、再度説明しません。代わりに @tornado.gen.coroutine を使用してください。
2. コルーチン化
Tornado コルーチンは、同期処理と非同期処理の利点を組み合わせて、コードを明確かつ理解しやすくし、高速処理に適応できます。大規模なクライアント、同時リクエスト。
コード:
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()
コルーチンの重要な技術的ポイントは次のとおりです:
tornado.gen.coroutine を使用して MainHandler の get() とpost() およびその他の処理関数。
時間のかかる操作を処理するには、この例の AsyncHTTPClient などの非同期オブジェクトを使用します。
yield キーワードを呼び出して、非同期オブジェクトの処理結果を取得します。
以上がPython での Tornado Web サイト開発の非同期およびコルーチン化の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。