0
現在、トルネードとasyncmongoを使用してmongodbにアクセスするウェブサイトを作成しています。私のハンドラに1回のリクエストでmongodbへの複数のリクエストを行う必要がある場合を除いて、すべてがうまく動作しています。私はすべてのデータベースを非同期に呼び出すことで、サーバー上にブロッキングがないようにしたいと考えています。トルネードでの非同期リクエストでの複数のデータベース呼び出し
どうすればこの問題を解決できますか?複数のコレクションから異なるドキュメントを取得する必要がある場合がいくつかあります。私は時には、私が最初のクエリから取得したデータを、2番目の外部キーなどの2番目のクエリで使用する必要がある場合もあります。テンプレートをレンダリングするときに、両方のリクエストのデータも必要になります。
ありがとうございます!
このスレッドは安全ですか?私はTornadoがHandlersのインスタンスをどのように処理するかあまり知らない。リクエストごとに新しいものが作成されていますか? – rsnj
はい、リクエストごとに新しいハンドラが作成されます。 Tornadoはスレッドセーフではありません。つまり、メインioloop以外のスレッドからRequestHandlerメソッドを呼び出すことはできません。上の例のようなコールバックは問題ありません。 –
おそらく、ネストコールバックが気に入らなければ、大量のコード(https://groups.google.com/forum/?fromgroups=#!topic/python-tornadoとhttp:// emptysquare)が発生します。 net/motor/pymongo/api/motor/generator_interface.html#generator-interface。特にリンク#2、すべてのクエリが終了してコールバックを実行するのを待ちます。 –