問題タブ [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 に答える
2592 参照

apache2 - Tornadoは、「Pythonで記述された比較的単純な非ブロッキングWebサーバーフレームワーク」です。これは、それが何を意味するのかをある程度説明できますか?

これはおそらくばかげた質問ですが、「ノンブロッキングWebサーバー」とは正確には何ですか?すべてのWebサーバーは技術的に非ブロッキングですが、そうではありませんか?それ以外の場合、それらはどのように同時接続を処理できますか?Apache2は、fork()とpthreadの組み合わせを使用してこれを実現します。Tornado(およびTwistedも)はどの程度正確に異なりますか?一連のソケットを非ボッキングモードに設定し、FDリスト(または同等のもの)を作成してから、1つの大きなselect()sys呼び出しでそれをループしますか?

このようなフレームワークはどこで使用しますか?また、Apache2(または他の一般的なサーバー)に比べてどのような利点がありますか?ありがとう

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

python - トルネード入門

apt(python 2.5、simplejsonなど)を介して必要なパッケージをインストールした後、デモを実行しようとするとエラーが発生します。

必要なパッケージがインストールされていることの証明です

フレンドフィードからこのトルネードを試している人はそれほど多くないようです。誰かが私がそれを立ち上げて実行するのを助けるための提案/ヒントがありますか?

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

multiple-instances - 複数のポートで複数の Tornado Server インスタンスを起動するにはどうすればよいですか

次のポートでブログのデモを開始する必要があります。

127.0.0.1:8000 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003

次を使用してアプリケーションを実行すると:

./demos/blog/blog.py

次で定義されているように、ポート 8888 で開始します。

define("ポート", デフォルト=8888, help="指定されたポートで実行", type=int)

複数のポートで複数のインスタンスを実行するにはどうすればよいですか?

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

apache - PyAMF バックエンドの選択肢!

私は PyAMF を使用して、クライアントのニーズに応じて何百もの異なるイメージの異なるグループを要求するフレックス アプリのバックエンドを作成しています。フレックスコードの開発中に、PyAMF が提供する「simple_server」WSGI サーバーを使用しています。これで、mySQL データベースから画像を取得し、可能な限り高速かつ効率的に多くの同時クライアントに送信できる堅牢なバックエンドを作成する準備が整いました。

PyAMF のドキュメントは、従うべき多くの例を提供しているので素晴らしいですが、作成しようとしているバックエンドの種類について混乱しています。

SocketServer、WSGI サーバー、または Twisted、web2py、Tornado のようなものが必要ですか? これらはすべて異なっていますか?:) 代わりに Apache モジュール (mod_wsgi または modjy または mod_python) を使用する必要がありますか?

これはおそらく多くの公開討論に関係していると思いますので、これらの討論の良い要約を教えていただけないでしょうか?

選択肢が多いのはいいけど、どうやって選べばいいの?

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

python - 複数の Tornado プロセス/スレッド/フロントエンドを実行するには?

竜巻のドキュメントでは、 4 つのフロントエンドから非常に大きなスループットを実現する方法が示されています。同じ方法でアプリを実行したいのですが、フロントエンドを init.d スクリプトで管理されるデーモン プロセスとして実行したいと考えています*。

私はPythonにかなり慣れていないので、どこから始めればよいか本当にわかりません。現在、ターミナルで Tornado サーバーを手動で起動し、毎回新しいポート番号を渡しています。

python-daemon パッケージをlockfile パッケージと組み合わせて使用​​しようとしましたが、作成されたロックファイルにはプロセス ID が含まれておらず、後でプロセスを適切に強制終了する方法がわかりません。

ここからどこへ行くべきか本当にわかりません.Tornadoのドキュメントは展開に関して大きな部分を残しています.

* プロセスをグループとして監視および管理できるように、プロセスを管理するためのより良い方法がある場合は、お知らせください。

0 投票する
7 に答える
11279 参照

python - Python での Comet の最新の推奨事項は?

私は Python で Comet を実装する予定です (erlycomet については良いことを聞いていますが、バックエンドで他のすべてのものに加えて Erlang ベースの Web サーバーをサポートすることに興奮していません)。私はいくつかの可能性を見つけました:

(Java サーバーとインターフェースをとる他の選択肢もいくつかありますが、私はそれらには興味がありません)

パフォーマンス、コミュニティ、および実装の容易さを考慮して、誰かがこれらの実装の中で推奨を行うことができますか?

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

http - ゲームの通信レイヤーとしての HTTP

ゲーム開発に手を出し始めたばかりで、単純なマルチプレイヤー ゲームを作成したいと考えていました。マルチプレイヤー ゲームの主要な通信プロトコルとして HTTP を使用することは可能ですか? 私のゲームは 1 秒間に複数のリクエストを行うのではなく、数秒ごとに 1 つのリクエストを行います。クライアントはモバイル デバイスになります。

私が尋ねている理由は、伝えられるところによると、スケーリングが良好で、ノンブロッキング リクエストをサポートし、「数千の同時ユーザー」を処理できると報告されている Tornado を使用してみるのは興味深いかもしれないと思ったからです。

したがって、私のクライアントは HTTP リクエストを作成でき、ゲーム サーバーに通知するものがあれば、リクエストに応答します。これは、一部の人々が COMET デザイン パターンと呼んでいるものを示していると思います。

ソケットレベルで作業する方がオーバーヘッドが少ないことは理解していますが、ゲームの要件を考えると、これが実現可能かどうか疑問に思っていますか? それとも私はただ頭がおかしいのですか?

前もって感謝します。

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

python - Python Tornado Web - AttributeError: 'Connection' オブジェクトに属性 '_execute' がありません

運用サーバーにアプリをデプロイすると、tornadoweb の最新のブランチで奇妙な動作が発生します。

コードを数回テストしましたが、python 2.6.3 と MySQLdb 1.2.3b2 を使用してラップトップ (Archlinux) でテストすると、完全に機能します。

Python 2.6.2、MySQLdb 1.2.3.c1 (1.2.1 バージョンでもテスト済み) を使用して実稼働サーバー (Ubuntu x64) にデプロイし、そのページを呼び出すとすぐに、次のエラーが発生します。

奇妙な動作は、ラップトップでネイティブ デモ (ブログと呼ばれる) をテストすると正常に動作することですが、本番環境にデプロイするとすぐに、上記の保存の問題で動作しなくなります。

db.get/db.query関数が正常に動作することを追加する必要があります。

0 投票する
6 に答える
24230 参照

django - REMOTE_ADDR が nginx と tornado を使用して Django に送信されない

そのため、静的メディアと負荷分散用のnginxとdjango用のWebサーバーとしてのtornado(4台のサーバーが実行中)を使用した簡単なセットアップを取得しました。私の問題は、remote_addr が django に渡されないため、KeyError が発生します。

article.ip = request.META['REMOTE_ADDR']

nginx.conf のおかげで、リモート アドレスは X-Real-IP (HTTP_X_REAL_IP) として送信されます。

HTTP が META キーの先頭に追加されるため、proxy_set_header remote_addr $remote_addr を実行することはできません。リモート アドレス キーが見つからない場合は、X-Real-IP を読み取ることができますが、よりスマートなソリューションがあるかどうか知りたいです。

ありがとう!