問題タブ [tornado]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1102 参照

tornado - TornadoサーバーをSnowLeopardで稼働させる方法

私はosxにかなり慣れていません。箱から出してすぐに、Tornadoサーバーを起動して実行するための手順は何ですか?

0 投票する
1 に答える
907 参照

python - Disqus を Facebook Connect 対応サイトに統合する方法 (python Tornado アプリ)

FacebookMixin を使用して、Tornado ベースのサイトに Facebook 認証を使用することに成功しました。また、JavaScript ウィジェットを使用してページに配置された Disqus に対して Facebook Connect 認証を有効にしています。ユーザーが既に FB を使用してサイトにログインしている場合でも、Disqus を使用してコメントするには、FB に再度ログインする必要があります。

Discus FB Connect はどのように機能すると思われますか? この 2 つ (FacebookMixin/Disqus) の間でシームレスな FB 認証を取得したと仮定しました。

0 投票する
3 に答える
5507 参照

python - トルネードと Python 3.x

私はTornadoが本当に好きで、Python バージョン 2.5 および 2.6 用に書かれていますが、Python 3 で使用したいと考えています。

残念ながら、プロジェクトのソースにはテスト スイートが付属していないようです。私が正しく理解していれば、その仕様はまだ Python 3の準備ができていないため(?) 、WSGI の部分を移植するのはそれほど簡単ではありませんが、私は Tornado の非同期機能に興味があるので、WSGI の互換性は私の主な関心事ではありません。それはいいだろう。

基本的に、移植しようとするときに何を調べたり注意を払ったりするか、またはすでにポート/フォークが存在するかどうかを知りたいです(何かを見逃している可能性がありますが、 google を使用したりgithubを閲覧したりしても見つかりませんでした)。

0 投票する
3 に答える
2439 参照

asynchronous - Tornado Web と永続的な接続

永続的な接続をサポートするTornadoWebでHTTPサーバーを作成するにはどうすればよいですか。

つまり、接続を閉じることなく、多くのリクエストを受け取り、それらに応答できるようになります。非同期で実際にどのように機能しますか?

永続的な接続を処理するためのハンドラーの書き方を知りたいだけです。実際にはどのように機能しますか?

私はそのようなハンドラを持っています:

execute は終了時にコールバックを呼び出します。

その方法で投稿が何度も呼び出され、クライアントからの httprequest ごとに 1 つの接続カウントが増加するという私の仮定は正しいですか? しかし、接続ごとに個別のカウント値がありますか?

0 投票する
2 に答える
1338 参照

jquery - tornado ハンドラーでの jquery-Ajax 呼び出しは、前の ajax 呼び出しが戻るのを待機します。

最近、jquery getJSON 関数を使用してトルネード ハンドラーを呼び出すホーム プロジェクト用に TornadoWeb のテストを開始しました。そして、私が説明を求めている奇妙なものを見つけました。

トルネードでHandler1の ajax リクエストを起動すると、場合によってはHandler1が戻る前にHandler2のリクエストが開始されます。development-server ログと firebug console-debugging から、Handler2リクエストがHandler1リクエストが終了するのを待ってから戻ることがわかります。したがって、基本的に、XHR 呼び出しは以前の XHR を待っています。それらは非同期/ノンブロッキングであるはずですよね?? それとも私は何かが欠けています。

http://github.com/harshh/Harsh-Projects/でtesttornadoと呼ばれるテスト ケース環境を確認できます。main.py をサーバー トリガー ファイルとして使用します。

これに光を当てることができる人からの助けをいただければ幸いです。

0 投票する
3 に答える
4798 参照

python - Python用の非同期mysqllibを知っている人はいますか?

私はPython用の非ブロッキングサーバー(tornado、twistedなど)を調べてきましたが、データベースへの非ブロッキング接続がないと、多くの利点が失われるようです。これを処理するプロジェクトがあるかどうか誰かが知っていますか?(la node.jsを非ブロック化することにより)

編集:私の質問を明確にしました

0 投票する
3 に答える
3936 参照

python - Tornado Web Framework Mysql 接続処理

私は最近、多くの異なるクライアントによる多くの一貫した接続を提供するために、Tornado Web フレームワークを調査しています。

基本的に RSA 暗号化文字列を取得して復号化するリクエスト ハンドラーがあります。復号化されたテキストは、私が作成した SAX ドキュメント ハンドラーによって解析される XML 文字列です。すべてが完全に正常に動作し、実行時間 (HTTP 要求ごと) は約 100 ミリ秒 (復号化と解析を含む) でした。

XML には、ユーザーのユーザー名とパスワードのハッシュが含まれています。ユーザー名がアプリケーションによって提供されたパスワード ハッシュと一致することを確認するために、MySQL サーバーに接続したいと考えています。

基本的に次のコードを追加すると:

HTTP リクエストの実行にかかる時間は、最大で 4 ~ 5 秒です。これは、MySql データベース サーバー自体への接続にかかる時間に起因すると考えられます。

私の質問は、どうすればこれをスピードアップできますか? グローバル スコープで MySQL 接続を宣言し、新しいカーソルを作成してリクエスト ハンドラでアクセスできますか? それとも、Tornado の非同期設計のために同時実行の問題が発生しますか?

基本的に、HTTP リクエストごとに MySQL サーバーへの新しい接続を発生させる必要がないようにするにはどうすればよいので、実装に数秒かかるのではなく、ほんの数秒しかかかりません。

また、SQL サーバーは実際には Tornado Web サーバー インスタンスと同じ物理マシン上にあることに注意してください。

アップデート

以下の同じコードで、プロファイラーを介して単純な MySQL クエリを実行しました。

「connections.py」init関数の呼び出しは、単独で実行するのに 4.944 秒かかりました。それは正しくないようですね。

更新 2

1 つの接続 (または非常に単純な DB 接続プールを使用したいくつかの接続) で実行すると、トルネード Web サーバー インスタンスごとに期待するスループットを処理するのに十分な速度になると思います。

1,000 のクライアントがクエリにアクセスする必要がある場合、通常のクエリ時間は数千秒ですが、最も不運なクライアントは、データを取得するために 1 秒待つだけで済みます。

0 投票する
5 に答える
492 参照

python - HTTP 経由で高価なブロッキング python プロセスの結果を提供するより良い方法はありますか?

大きな MP3 ファイルの固定在庫の小さな任意のセグメントを提供する Web サービスがあります。MP3 ファイルは、Python アプリケーションによってオンザフライで生成されます。モデルは、必要なセグメントを指定して URL に GET 要求を行い、audio/mpeg応答でストリームを取得することです。これは高価なプロセスです。

フロントエンドのリクエスト ハンドラとして Nginx を使用しています。Nginx は、一般的なリクエストに対するレスポンスのキャッシュを処理します。

最初に、バックエンドで Tornado を使用して Nginx からのリクエストを処理しようとしました。ご想像のとおり、MP3 操作のブロックにより、Tornado は本来の機能 (非同期 I/O) を実行できませんでした。そのため、マルチスレッド化を行った結果、ブロックの問題が解決され、非常に優れたパフォーマンスを発揮しました。ただし、まだ診断や再現ができていない微妙な競合状態 (実際の負荷の下) が発生しました。競合状態により、MP3 出力が破損します。

そこで、アプリケーションを単純な WSGI ハンドラとして Apache/mod_wsgi の背後に設定することにしました (まだ Nginx を前に置いています)。これにより、ブロッキングの問題と競合状態が解消されますが、実際の条件下ではサーバー上にカスケード負荷 (つまり、Apache が作成するプロセスが多すぎる) が発生します。現在、Apache/mod_wsgi の調整に取り組んでいますが、まだ試行錯誤の段階です。(更新: Tornado に戻しました。以下を参照してください。)

最後に、質問があります。何か足りないものはありますか? HTTP 経由で CPU コストの高いリソースを提供するより良い方法はありますか?

更新: Graham の情報に基づいた記事のおかげで、これは Apache のチューニングの問題であると確信しています。その間、Tornado の使用に戻り、データ破損の問題を解決しようとしています。

すぐに問題に対処した人にとっては、Tornado と少しのマルチスレッド (スレッドによって導入されたデータの整合性の問題にもかかわらず) は、小さな (シングル コア) Amazon EC2 インスタンスで許容できる負荷を処理します。

0 投票する
2 に答える
2295 参照

python - tornado-ブロックせずにファイルをcdnに転送する

サイトのアップロードを処理するnginxアップロードモジュールがありますが、ファイル(たとえば、それぞれ3〜20 MB)をcdnに転送する必要があり、バックグラウンドジョブに委任したくありません。

他のリクエストをブロックせずにトルネードでこれを行うための最良の方法は何ですか?非同期コールバックでこれを行うことはできますか?

0 投票する
3 に答える
474 参照

python - Web サービスへの Python のアプローチおよび/または GET および POST の処理

私はしばらくの間pythonを使っています。最近、Telnet、SSH、およびメッセージ パッシングの学習に適した Sockets with Twisted にはまりました。アイデアを取り入れて、それを Web の方法で実装したかったのです。1 週間の検索で、実際にできることは、GET と POST をすべてそれ自体で処理するリソースを作成することだけです。そして、これは悪い習慣だと言われています。

1 週間後に私が持っている質問:
* Tornado や標準 Python ソケットなどの他のオプションは、より優れた (またはより一般的な) アプローチですか?
* Twisted の GET 操作と POST 操作で本当に別のリソースを使用する必要がありますか?
* Python 開発のこの分野で始めるのに適したリソースは何ですか?

私の言語のバックグラウンドは C、Java、HTML/DHTML/XHTML/XML であり、私のメイン システム (自宅でも) は Linux です。