問題タブ [twisted.web]
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 - 推奨されるジャンゴでツイストウェブです
WSGI コンテナーにデプロイする必要がある Django アプリケーションがあります。TwistedWeb のようなイベント ドリブン アプリ サーバーか、uWSGI のようなプロセス ドリブン サーバーのいずれかを選択できます。イベント駆動型サーバーとプロセス駆動型サーバーの違いを完全に理解しており、Django フレームワークが本質的にブロックしていることを知っています。
WSGI アプリケーションを簡単な方法で実行できる TwistedWeb に出会いました。
私の質問は次のとおりです。
1) Django が本質的にブロックしているため、uWSGI の代わりに Twisted を実行することで何か得られるでしょうか。TwistedWeb は標準の twisted ライブラリとは違うのですか? 非同期のサポートが必要な場合や、通常の機能に加えて ex チャットのサポートが必要な場合に、Django で Twisted を実行している人がいることを私は知っています。私にはそのようなユースケースはなく、私にとっては単なるウェブサイトです。
2) TwistedWeb では、単一のプロセスであり、Django は本質的に同期的であるため、要求がブロックされるため、パフォーマンスが低下しますか? または、TwistedWeb は、事前に複数のプロセスを起動し、それらの間でラウンドロビン方式でリクエストを分散する uWSGI のようなものを実行しますか? はいの場合、TwistedWeb は uWSGI より優れていますか?
3) WSGI 以外に、Twisted を Django と統合し、非同期動作を提供できるプロトコルはありますか (ここで私の運を試してみてください:))
python - twisted クライアントで応答データを取得する
このチュートリアルに従いましたが、サーバーから応答データを取得する方法がわかりません。
応答データがクライアントに表示されることを知っています
サーバーから返されたメッセージを取得して変数に格納するにはどうすればよいですか?
python - Python Twisted Web HTTPChannel とリソースの使用
認証に Station to Station Protocolを利用する特定のプロトコル仕様を書いています。これまでのところ、 、とともにTwisted Web とResourceクラスを使用してきましたが、クライアントで認証ステップが完了すると、通信は HTTP プロトコル レベルでも暗号化されます。つまり、可視性を失い、TCP セッションで暗号化されたバイトのみを受信します。メソッドのインターセプトを調べてみましたが、解析された HTTP メソッドがない場合は呼び出されません。まだ使用することは可能ですか、それとも HTTPChannelと生データを渡す機能を使用するように「ダウンシフト」する必要がありますか?render_GET
render_POST
GET /resource
render
Resource
twisted - ツイストでプーリング HTTP 接続を作成するには?
単一のサイトから Web ページを取得するための非常に単純なスパイダー プログラムを作成します。
こちらは最小化バージョン。
100 などのいくつかのリクエストでは、問題なく動作します。ただし、大量のリクエストの場合、失敗します。
HTTPConnectionPool
、 setを使用し、それを使用maxPersistentPerHost
してAgent
インスタンスを作成し、接続を段階的に作成するため、すべてのリクエスト (約 3000) が自動的にプールされ、スケジュールされ、パイプライン処理されるはずです。
しかし、そうではありません。接続はキープアライブでもプールされていません。
このプログラムでは、接続を段階的に確立しましたが、接続はプールされませんでした。各接続は本文の受信後に閉じられ、その後の要求はプールで使用可能な接続を待機しません。
したがって、リモートサーバーの接続タイムアウトが30秒に設定されているため、数千のソケットが必要になり、最終的にタイムアウトのために失敗します. 何千ものリクエストを 30 秒以内に処理することはできません。
これについて何か助けてもらえますか?
私はこれに最善を尽くしました。ここに私の発見があります。
- エラーは原子炉が稼働を開始してからちょうど 30 秒後に発生しました。他の要因による影響はありません。
- スパイダーにサーバーを取得させてみましょう。面白いものを見つけました。
- HTTP プロトコルのバージョンは 1.1 です(ツイスト ドキュメントを確認しました。デフォルトの HTTPClient は1.1 ではなく1.0です)。
- 明示的なヘッダーを追加しなかった場合 (最小化されたバージョンのように)、要求ヘッダーには含まれていませんでした
Connection: Keep-Alive
。応答ヘッダーも含まれていません。 - キープアライブ接続であることを確認するために明示的なヘッダーを追加すると、要求ヘッダーには が含まれていまし
Connection: Keep-Alive
たが、応答ヘッダーには含まれていません。(サーバーが正しく動作していると確信しています.Chromeなどの他のものはwgetでConnection: Keep-Alive
ヘッダーを受け取りました。)
- 走行中に確認する
/proc/net/sockstat
と、最初は急激に増加し、その後急激に減少します。(多くのソケットをサポートするために ulimit を増やしました) - ツイストベースのリクエストライブラリであるtreqを使用して同様のプログラムを作成します)。コードはほぼ同じなので貼り付けません。
- リンク: https://gist.github.com/Preffer/dad9b1228fcd75cebd75
- その挙動はほぼ同じです。プーリングではありません。treq の機能リストに記載されているように、プーリングであると予想されます。
- 明示的なヘッダーを追加した場合
Connection: Keep-Alive
、応答ヘッダーには表示されません。
上記のすべてに基づいて、私は奇妙なConnection: Keep-Alive
ヘッダーがプログラムを台無しにするのではないかとかなり疑っています. しかし、このヘッダーは HTTP 1.1 標準の一部であり、HTTP 1.1 として報告されました。私はこれに完全に困惑しています。
python - Twisted リバース プロキシ SSL バックエンド
私はツイストにかなり慣れていないので、twisted.web.proxy.ReverseProxyResource を利用してリバース プロキシを作成しようとしています。最終的には、クライアントが SSL を使用して接続するようにしたいので、リクエストを検証して、SSL バックエンド サーバーにのみ渡します。以下の (非常に) 基本的なコードから始めていますが、SSL バックエンドに接続するのに苦労しており、ドキュメントが不足していることに気づきました。誰かが私にいくつかの良い指針、または理想的にはいくつかのサンプルコードを与えることができますか?
以下のコードでは、プレーンな HTTP サーバーにヒットすることを期待しているため、明らかに機能しません。これを「ssl」するにはどうすればよいでしょうか?
いつものように、どんな助けもとても、とても、とても感謝しています。
ありがとう
アレックス
python - Twisted Web クライアントの HTTP バージョン
twisted.web.client.Agent を使用して HTTP リクエストを発行している場合、リクエストで強制的に HTTP 1.0 を使用するにはどうすればよいですか? デフォルトでは、HTTP 1.1 が使用されます。
編集: HTTP 1.0 の使用に興味があるのは、チャンク転送エンコーディングを無効にしたいからです。これを行う最も信頼できる方法は、HTTP 1.0 を使用することです。
python - Twisted は SFTP FTPS と HTTPS サーバーを同時に実行できますか
私は野心的すぎて、達成しようとしていることは twisted を使用してもできないかもしれませんが、Twisted を使用して次のすべてを実行するアプリケーションを開発したいと考えています。
- SFTP サーバーを実行する
- FTPS サーバーを実行する
- HTTPS サーバーを実行する (ファイルを転送するための Web UI)
これらのプロトコルはすべて、ユーザー認証のために単一のデータベースを共有します。
また、ある時間間隔でファイル転送をトリガーできるスケジューラーを作成したいと思います。
サイトのドキュメントを読むと、このフレームワークは無限のように見えますが、内部と外部を知らずに Twisted が上記のすべてを実行できるかどうかを理解するのは困難です。
私はまだ彼らのサイトの例を調べています.
可能であれば、これを達成する方法についてのフィードバックや指針をいただければ幸いです。
python - IQtNetwork.QHttp リクエストの認証情報の問題
私は現在、後続のリクエストに使用されるトークンを生成するRESTful http APIを介して認証しています。
API サーバーは python twisted で記述されており、うまく機能します。認証トークンの生成はブラウザーで正常に機能します。
pyqt で記述されたソフトウェアから要求すると、最初の要求は pyqt アプリにトークンを渡しますが、pyqt アプリからの後続の要求は失敗します。これは、リモートのツイスト サーバーが完全に別のブラウザーであると認識しているためです。
javascript ajax もこれを行いますが、リクエストと共に xhrFields: {withCredentials: true} を送信することで解決できます。
PyQtでこれを解決するにはどうすればよいですか?
twisted - Azure Web サイトで Twisted を実行する
Azure Websites は Twisted アプリケーションをホストできますか? 例:
http://azure.microsoft.com/en-us/documentation/articles/web-sites-python-configure/からは、WSGI アプリのみがサポートされているように思えますが、Azure Websites の専門家からその方法がないことを確認したかっただけです。上記のようなものを直接実行します。
--
#twisted.web IRC チャンネルでの Glyph (Twisted の作成者) との議論からの抜粋は、この質問の Twisted の半分をカバーしています。
実際にこのようなものを直接実行する方法がない場合、Python 以外の言語を選択すると、Azure Web サイトの柔軟性が向上するようです。たとえば、http://azure.microsoft.com/en-us/documentation/articles/web-sites-nodejs-develop-deploy-mac/から、HTTP を直接話す Azure Web サイトでノード アプリをホストできるようです。 . 確認または訂正はありがたく受け取りました。
python - Ajax - サーバー側でフォームを検証する
サーバー側で検証する必要があるフォームを持つ単純な Web を作成しています。検証後、成功した場合、サーバーは別のページにリダイレクトします。それ以外の場合は、現在のページにエラー ポップアップが表示され、すべての入力値が保持されます。
Ajaxの使用を考えていますが、これについてはあまり経験がありません。アイデアを教えてください。