ホームページ  >  記事  >  バックエンド開発  >  Python での Tornado Web サイト開発の非同期およびコルーチン化の概要

Python での Tornado Web サイト開発の非同期およびコルーチン化の概要

不言
不言転載
2018-10-19 17:21:462452ブラウズ
この記事では、Python での Tornado Web サイトの非同期およびコルーチン開発について紹介します。これには一定の参考価値があります。必要な友人は参照できます。お役に立てれば幸いです。

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 サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。