18
  1. コードがこのデコレータを使用していない場合、それはノンブロッキングですか?
  2. この名前が非同期である理由は、デコレータを追加してコードを非同期にすることを意味するのですか?
  3. @tornado.gen が常に @tornado.web.asynchronous と一緒に使用するのはなぜですか?
4

3 に答える 3

22

@tornado.web.asynchronous RequestHandlerがを自動的に呼び出すのを防ぎself.finish()ます。それでおしまい; これは、Tornado が手動で呼び出すまで接続を開いたままにすることを意味しますself.finish()

  1. このデコレーターを使用しないコードは、ブロックすることも、ブロックしないこともできます。デコレータを使用しても、それはまったく変わりません。

  2. @Steve Peakが言ったように、データベースの取得などの非同期リクエストにはデコレータを使用します。

  3. Tornado 3.1+ 用に更新: を使用する場合、同様@gen.coroutineに使用する必要はありません。@asynchronous古い@gen.engineインターフェイスにはまだ が必要@asynchronousだと思います。

于 2013-01-30T13:38:52.303 に答える
5
  1. ここで回答:非同期 vs ノンブロッキング

  2. このように考えてください。データを取得するためにデータベースまたは別の URL を要求する必要がある場合、tornado IO をブロックしたくありません。その@tornado.web.asynchronousため、コンテンツ (データベースや URL など) がロードされるのを待っている間、IO が他の要求を処理できるようになります。

  3. それらは似ています。ほとんどの場合、 を使用します@tornado.web.asynchronous

于 2013-01-29T21:24:45.780 に答える