問題タブ [twisted]
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 - TCP サーバーを構築するための優れた Python ネットワーク ライブラリは?
TCP/IP サーバーを構築するための Python 用のネットワーク ライブラリには、どのようなものがあるのだろうと思っていました。Twisted が頭に浮かぶかもしれないことは知っていますが、ドキュメントは少なく、ずさんで、散らばっているように思えます。
また、Twisted を使用すると、select.select() を使用して自分のサーバーをロールするよりも利点がありますか?
python - Twitter とのインターフェースにおける xml、json、rss、atom の実際的な違いは何ですか?
私は Web サービスが初めてで、入門として、Python で Twisted フレームワークを使用して Twitter API をいじっています。それらが提供するさまざまな形式を読みましたが、かなり単純なプロジェクトでどの形式を使用すればよいかまだ明確ではありません。具体的には、JSON を使用するか XML を使用するかの実際的な違いについて、私が指導したいと思います。私がしているのは、公開タイムラインをリクエストしてローカルにキャッシュすることだけです。
ありがとう。
python - Python/Twisted - 特定のソケット オブジェクトに送信しますか?
ノードに「マネージャー」プロセスがあり、いくつかのワーカー プロセスがあります。マネージャーは、クライアントへのすべての接続を保持する実際のサーバーです。マネージャーはすべての着信パケットを受け入れてキューに入れ、次にワーカー プロセスがパケットをキューから取り出して処理し、結果を生成します。彼らは結果をマネージャーに送り返します (マネージャーによって読み取られる別のキューにそれらを入れることによって) が、ここで行き詰まります: 特定のソケットに結果を送信するにはどうすればよいですか? 単一のプロセスでパケットの処理を処理する場合、パケットを受信すると、「トランスポート」オブジェクトをコンテキスト内で取得するだけで応答できるため、簡単です。しかし、私が使用している方法でこれを行うにはどうすればよいですか?
python - Python/Twisted - TCP パケットの断片化?
Twisted で dataReceived メソッドを実装する場合、パケットが断片化されていることを示す例はないようです。他のすべての言語では、これは手動で実装するものなので、twisted でこれが既に行われているのか、それとも何なのか疑問に思っていました。その場合、パケットに長さヘッダーのプレフィックスを付ける必要がありますか? または、これを手動で行う必要がありますか? もしそうなら、それはどのような方法でしょうか?
python - アプリケーションサーバーの単体テスト
私は(pythonとtwistedを使用して)アプリケーションサーバーを作成し、いくつかのテストを作成し始めたいと思います。しかし、時間の制約と今はそれで遊ぶ時間がないので、私はツイステッドのトライアルを使いたくありません。これが私が念頭に置いていることです。アプリサーバーに接続して必要な要求を行う小さなテストクライアントを作成し(通信プロトコルは社内のXMLです)、受信したXMLを静的な方法で保存してから、いくつかのテストを作成します。 unitestを使用してこれらの静的データに適用します。
私の質問は次のとおりです。これは正しいアプローチですか。正しい場合、このアプローチではどのような種類のテストがカバーされますか?
また、この方法を使用すると、次のようないくつかの欠点があります。スキーマを構築/再構築するためにデータベースレイヤーにアクセスできない、テストクライアントがサーバーに接続するタイミング:単体テストごと、またはテストスイートを実行する前?
python - Python /ツイストマルチユーザーサーバー-より効率的なものは何ですか?
Pythonでは、サーバーをCPU単位で適切に拡張したい場合は、明らかに複数のプロセスを生成する必要があります。私はどちらが良いのか疑問に思っていました(ツイストを使用):
A)マネージャープロセス(実際のソケット接続を保持するプロセス)は、受信したパケットを共有キュー(マルチプロセッシングモジュールからのパケット)に入れ、ワーカープロセスはパケットをキューから引き出して処理し、結果をに送り返します。クライアント。
B)マネージャープロセス(実際のソケット接続を保持するプロセス)は、遅延スレッドを起動してから、プロセスプールでapply()関数を呼び出します。結果がワーカープロセスから返されると、マネージャーは結果をクライアントに送り返します。
どちらの実装でも、ワーカープロセスはスレッドプールを使用するため、一度に複数のパケットを処理できます(データベースクエリが多数発生するため)。
python - Twisted で広く使用されている STOMP アダプターはありますか?
ストンパーをチェックアウトしましたが、完全ではないように見えました。(私は Python を初めて使用します) 本番環境で Stomper を使用している人はいますか?
そうでない場合は、独自の Twisted Stomp アダプターを展開する必要があると思います。
前もって感謝します!
python - python の httplib の代わり?
標準ライブラリのhttlibを介して大量のデータをプッシュするpythonクライアントがあります。ユーザーは、アプリケーションが遅いと不満を漏らしています。これは、私が使用している HTTP クライアントが原因の一部であると思われます。
httplib を別のものに置き換えることでパフォーマンスを改善できますか?
twisted が HTTP クライアントを提供しているのを見てきました。他のプロトコル製品と比較して、非常に基本的なようです。
PyCurl は有効な代替手段かもしれませんが、その使用は非常に非 Pythonic のように見えますが、パフォーマンスが本当に優れている場合は、少しの非 Pythonic コードを我慢できます。
Python のより優れた HTTP クライアント ライブラリの経験がある場合は、それについて教えてください。httplib と比較した場合のパフォーマンスと、実装の品質についてどう考えているかを知りたいです。
更新 0: httplib の使用は実際には非常に限られています。交換には次の操作が必要です。
それだけです。プロキシ、リダイレクト、その他の凝ったものはありません。これは昔ながらの HTTP です。できるだけ早くそれを実行できるようにする必要があります。
更新 1: 私は Python2.4 で立ち往生しており、Windows 32 で作業しています。httplib のより良い使用方法について教えてください。httplib の代替手段について知りたいです。
python - Pythonプログラムでメモリリークを見つけるにはどうすればよいですか?
重複の可能性:
Pythonメモリプロファイラー
私はかなり複雑な(約20,000)行のPythonプログラムを持っています。これは、いくつかの開発の後、実行時に増加する量のメモリを消費し始めました。すべてのメモリが何に使用されているかを知るための最良のツールとテクニックは何ですか?
通常、これは、オブジェクトへの参照を予期せず保持するか、拡張モジュールのバグ(Python 2.4インストールをしばらく使用しているため特に発生する可能性は低い)に起因します。
Twisted、Twisted Conch、MySQLdbなどのさまざまなサードパーティライブラリを使用しています。
python - Twistedを使用すると、「connectionMade」はどのようにして特定のDeferredを起動できますか?
これはより大きなプログラムの一部です。関連する部分だけを説明します。基本的に、私のコードはリモートホストへの新しい接続を作成したいと考えています。これにより、Deferredが返されます。これは、接続が確立されると起動するため、何かを送信できます。
との接続を作成していtwisted.internet.interfaces.IReactorSSL.connectSSL
ます。これはbuildProtocol
、ClientFactory
インスタンスを呼び出して新しい接続(twisted.internet.protocol.Protocol
)オブジェクトを取得し、を返しますtwisted.internet.interfaces.IConnector
。接続が開始されると、Twistedはファクトリを呼び出しstartedConnecting
、ファクトリにを与えますIConnector
。接続が実際に確立されると、プロトコルのconnectionMade
コールバックが引数なしで呼び出されます。
これで、ホスト/ポートごとに1つの接続のみが必要な場合、残りは簡単になります。を呼び出す前connectSSL
に、Deferredを作成し、キーが設定された辞書(host、port)に配置します。次に、プロトコルのconnectionMadeでself.transport.getPeer()
、ホスト/ポートを取得し、それを使用してDeferredを検索し、そのコールバックを起動するために使用できます。しかし、複数の接続を作成したい場合、これは明らかに機能しなくなります。
connectSSL
問題は、connectionMade
後で呼び出す前に作成したDeferredを関連付ける他の方法が見当たらないことです。