問題タブ [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.
python - Tornado による複数の認証オプション
Tornado を使い始めたばかりで、複数の認証方法を提供したいと考えています。現在、私のアプリは tornado.auth.GoogleMixin を使用して Google のハイブリッド OpenID/oAuth で正常に動作しており、認証されていないユーザーは自動的に Google の認証ページに送信されます。
認証されていないユーザーが別のオプション (つまり、ローカル認証または tornado.auth.TwitterMixin) を使用したい場合、ログイン ハンドラー内で認証メカニズムを選択するロジックを実装するにはどうすればよいですか?
デコレーター「tornado.web.authenticated」をすべての公開メソッドに追加しました。現在 Google OpenID/oAuth で動作しているログイン ハンドラー クラス (Tornado の例からほぼそのまま) を次に示します。
解決策の提案をお待ちしております。ありがとう
python - Python Tornado の複数の静的ディレクトリ
次のようなディレクトリ構造のセットアップがあります。
Tornado から、js、css、libs を静的ディレクトリとして提供したいのですが、そのうちの 1 つしか提供する方法がわかりません。これはできますか?
python - Tornado を使用して、Python アプリケーションを監視するための Web インターフェイスを提供する
デーモン化され、サーバー上で 24 時間 365 日実行されている Python アプリケーションがあります。プログラム内のいくつかの変数の値の変化を監視できるように、非常にシンプルな Web インターフェイスを提供できるようにしたいと考えています。
私は Tornado を使用しており、Tornado のホームページにあるシンプルな「Hello, world」で起動して実行しています。ただし、呼び出されるとすぐにtornado.ioloop.IOLoop.instance().start()
ループに入り、戻りません。私の既存のプログラムも (本質的に) 無限ループですが、2 つを統合したいと考えています。
それで、私の質問は次のとおりです。Tornado を使用して Web インターフェイスを提供することにより、無限ループ内の変数を監視できるようにプログラムを構築するにはどうすればよいですか?
python - Python で Tornado を使用して multiprocessing モジュールを使用する Errno 9
ブロックすることが予想される (Tornado の非同期 HTTP 要求クライアントなどを使用するように簡単に変更できない) 私の Tornado サーバーでの操作については、multiprocessing
モジュールを使用して作業を分離したワーカー プロセスにオフロードしています。具体的には、マルチプロセッシングを使用していました。これは、引数の 1 つとしてコールバックを受け取るため、Tornado と非常にうまく連携Pool
する というメソッドを提供するためです。apply_async
私は最近、プールがプロセスの数を事前に割り当てていることに気付きました。そのため、それらがすべてブロックされると、新しいプロセスを必要とする操作は待機する必要があります。サーバーは、タスクキューに何かを追加することで機能するため、サーバーがまだ接続できることを認識していますがapply_async
、それ自体はすぐに終了しますが、実行する必要があるn個のブロックタスクに対してn個のプロセスを生成しようとしています。
Tornado サーバーの IOLoop のメソッドを使用add_handler
して、その IOLoop に作成する新しい PID ごとにハンドラーを追加できると考えました。以前に似たようなことをしたことがありますが、popen と任意のコマンドを使用していました。このメソッドの使用例はこちらです。ただし、スコープ内の任意のターゲット Python 関数に引数を渡したかったので、multiprocessing
.
multiprocessing.Process
しかし、私のオブジェクトが持っているPID が気に入らないようです。私は得るIOError: [Errno 9] Bad file descriptor
。これらのプロセスは何らかの形で制限されていますか? 実際にプロセスを開始するまで PID を使用できないことはわかっていますが、プロセスを開始します。この問題を示す、私が作成した例のソース コードを次に示します。
トレースバックは次のとおりです。
上記のコードは、プロセス プールを使用した古い例を実際に変更したものです。私は同僚と私自身の参照用にそれを保存してきました (そのため大量のコメントがあります)。2 つの小さなブラウザー ウィンドウを並べて開いて、/sync URI は接続をブロックし、/async はより多くの接続を許可することを上司に示すことができるように、私はそれを作成しました。この質問の目的のために、それを再現するために必要なことは、/async ハンドラーにアクセスすることだけです。すぐにエラーになります。
これについてどうすればよいですか?PIDはどのように「悪い」ことができますか? プログラムを実行すると、標準出力に出力されることがわかります。
記録として、Ubuntu 10.04 で Python 2.6.5 を使用しています。トルネードは1.1です。
websocket - WebSocket クロスコネクション通信 (Tornado?)
私は WebSocket をいじっていますが、基本的な WebSocket 接続を行う Tornado サーバーを簡単に実行できることに非常に満足しています。私は今日まで Tornado を使ったことがありません。見たものは気に入っていますが、その使い方に関していくつか質問があります。
主に、私は WebSocket を使用して、2 つ以上のクライアント マシン間でオーバーヘッドの少ない通信を行えるようにしています。(会話の目的で、チャット クライアントとだけ言いましょう)明らかに、複数のマシンからサーバーに接続でき、それらすべてがメッセージをサーバーにプッシュし、サーバーが応答できます。これは素晴らしいことです。しかし、それは標準の AJAX リクエストよりも優れているわけではありません。永続的な接続がある場合は、クライアントにもデータをプッシュできるようにしたいと考えています。最も単純なシナリオは、ユーザー 1 がサーバーにメッセージを投稿し、それを受信するとすぐにサーバーがそれをユーザー 2 にプッシュするというものです。
では、それを達成するための良い方法は何でしょうか? Tornado で確認できる限り、メッセージをどこかのデータストアに配置し、他のすべての接続で新しい情報をポーリングする以外に、接続間で通信する方法はありません。ただし、その時点で実際に行っていることは、ポーリング プロセスをクライアントからサーバーに移動することだけなので、これは非常に扱いにくいと思います。
もちろん、私はここで完全に間違ったツリーを吠えているかもしれません. Tornado がこの仕事に適したツールではないというのは確かにもっともなことです。
python - 私は竜巻フレームワークを使用しています。tornado テンプレートで dict および list タイプを使用できますが、テンプレートでオブジェクトを使用すると、メモリ アドレスとしてレンダリングされます。
詳細については。Solrpy パッケージをインポートして使用します。ページネーターを紹介するDjangoプロジェクトに関するドキュメント。pagenator.page (Solrpage) オブジェクトをトルネード テンプレートに渡しましたが、機能しません。Solrpageのどの方法でも使用できます。代わりに、メモリ アドレスとしてレンダリングされます。
以下は、ページネーターの使用方法です。これは、私が使用する方法でもあります
from django.core.paginator import Paginator, InvalidPage, EmptyPage
def listing(request): contact_list = Contacts.objects.all() paginator = Paginator(contact_list, 25) # 1 ページあたり 25 件の連絡先を表示
{% for contact in contacts.object_list %} {# 各「連絡先」は連絡先モデル オブジェクトです。#} {{ contact.full_name|upper }}
... {% endfor %}
python - django makemessage のようなトルネード ローカリゼーション CSV ファイルを生成する方法はありますか?
Django makemessage は i18n ファイルを生成し、翻訳をより簡単にすることができます。
tornado は CSV 形式と gettext 形式の両方に対応していますが、appengine で使用するため、CSV 形式しか使用できません。
そのため、コードとテンプレートのスキャンに基づいて竜巻ベースのこれらの CSV ファイルを生成する方法を探しています。
python - トルネードはいつ、どのように使用するのですか? 役に立たない時は?
OK、トルネードはノンブロッキングで非常に高速で、多くの継続的なリクエストを簡単に処理できます.
しかし、これは特効薬ではないと思います。Django ベースのサイトやその他のサイトをやみくもに Tornado で実行しても、パフォーマンスが向上することはありません。
これについての包括的な説明が見つからなかったので、ここで質問します。
- トルネードはいつ使用する必要がありますか?
- 役に立たない時は?
- それを使用するとき、何を考慮に入れるべきですか?
- Tornado を使用して非効率なサイトを作成するにはどうすればよいですか?
- サーバーと Web フレームワークがあります。いつフレームワークを使用する必要があり、いつ他のフレームワークに置き換えることができますか?
python - Python Tornado のデファクト プロジェクト テンプレート
誰かが python tornado のプロジェクト スケルトンを推奨できますか? 私は自分自身を転がすのは簡単だと思いますが、(明らかに)他の人が以前にこの道をたどっていたので、他に何があるか知りたいです.
django - トルネードサーバーを搭載したdjangoでutf-8文字列が表示されません
tornadoサーバーでdjangoサーバーを実行しています。
óやñのような特別な文字を使用すると、特定のdjangoテンプレートの特定の部分がレンダリングされません(文字セットはsettings.pyおよびtornado_script.pyで「utf-8」に指定されています#---コーディング:utf-8- -)。
テンプレートの特定の部分だけが適切にレンダリングされておらず(フォーム)、サーバーがdjango組み込みrunserverを使用して完全に機能していることを考えると、問題はtornadoサーバーから発生していると考えられますが、その構成をデバッグすることはできません。
不足している構成を見つけるためにこれをデバッグする方法を知っている人がいる場合は、私に知らせてください。
私は過去3時間多く検索してきましたが、結果はありません。
よろしくお願いします