問題タブ [twisted.internet]
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 - 大洪水/ツイスト スクリプトは、reactor.run() の後にハングします
これは、Deluge API と対話するためのdev.deluge-torrent.orgの簡単なサンプル スクリプトです。
reactor.run() の後に何も起こらず、「接続に成功しました」というメッセージが表示されず、永久にハングします。
これをUbuntuマシンで実行すると正常に動作しましたが、実際に使用したいWindowsマシンで動作させることができませんでした。
この問題をデバッグする方法がわかりません。私は Twisted に非常に慣れていませんが、私が理解していることから、それは巨大なライブラリです。
multithreading - ねじれたリアクターをスレッドから実行する
同期 python プログラムでスレッドからリアクターを実行すると、ねじれたコードが呼び出されません。
この問題を解決するために、私は眠らなければなりませんでした。
スリープを呼び出す代わりに、それを行う最良の方法は何ですか?
python-2.7 - スクレイピーでログメッセージのフォーマットを変更する方法はありますか?
スクレイピー ログ メッセージの先頭にユーザー ID が含まれるように変更したいと思います。たとえば、これの代わりに
のように見せることは可能ですか?
さらに、ユーザー メッセージのみをログに記録する方法はありますか。つまり、コードから提供する、ログに記録したいメッセージのみをログに記録しますか?
どんな助けでも大歓迎です。前もって感謝します!
python - ツイストリアクター起動時のCPU使用率
次のコードを含む python スクリプトの CPU 使用率を監視しています
ps コマンドを使用して CPU 使用率を取得しています (パーセンテージ)
条件は、5% を超える CPU を使用しないことです。しかし、スクリプトを実行するとすぐに、CPU 使用率が約 16% から 20% になります。その後、3 ~ 4 秒で 1% ~ 2% まで下がります。私の質問は、最初に CPU 使用率が 16% から 20% に増加するのはなぜですか? 私は、reactor の実行が開始されると、しばらくの間 CPU 使用率が上昇することを観察しました。その後、私の場合はほとんど CPU を使用しません (0.3% から 0.4%)。
python - パイプラインを使用してローカル シェル コマンドを実行するツイスト
ツイストでは、getProcessOutput メソッドはgetProcessOutupt('ps', 'aux')を使用して 'ps' シェル コマンド出力を取得し、遅延を返すことができました。
私の質問は、getProcessOutput で "ps aux | grep 'some keyword' | awk '{...}'" のようなコマンドを実行する方法です。たとえばgetProcessOutput("ps aux | grep 'some keyword' | awk '{...}'")。
任意の提案をいただければ幸いです。
python - twisted defer は、クラス インスタンス変数の割り当てを無効にします。
クラス A には、defer を使用する method_one と method_two の 2 つのメソッドがあります。コールバック関数では、値を self.value に設定し、defer のコールバック チェーンに追加します。しかしその後、self.value は method_two の元の値のままです。つまり、コールバック関数での self.value の割り当ては無効です。
前もって感謝します :-)
twisted - python twisted: ID ごとに 1 つの接続を強制する
SSLソケットを使用し、サーバーに接続するさまざまなクライアントを識別するために証明書を使用するねじれたサーバーがあります。可能なIDごとに接続が1つしかない状態を強制したいと思います。私が考えることができる2つの方法は、接続されたIDを追跡し、同じIDによる2番目の接続を許可しないか、2番目の接続を許可して最初の接続をすぐに終了することです。私は後者をやろうとしていますが、いくつかの問題があります(最後に私の選択を説明します)
ファクトリ クラスに接続のリストを保存し、SSL ハンドシェイク後にクライアントの ID をそのリストと比較します。すでにそのリストにある場合は、それを呼び出そうとします.transport.abortConnection()
。次に、データベースに新しい接続を記録するために行う通常のことを行います。ただし、への呼び出しは直接呼び出されabortConnection()
ないようです。これは、クリーンアップを実行し、接続が失われたことを示すためにデータベースを呼び出す場所です。connectionLost()
したがって、私のコードは、ID が接続されていることを記録しますが、後で呼び出しが行われconnectionLost()
、その ID が切断されているように見えます。
最初の接続が切断の処理を完了するまで、着信する 2 番目の接続をブロックする方法はありますか?
選択の説明: 私がこれを行っている全体的な理由は、NAT の背後にかなり定期的に (1 ~ 3 日に 1 回) IP アドレスを変更しているように見えるクライアントがいるからです。接続しているデバイスは、接続が不自然に切断され、新しい IP に再接続しようとします。ただし、サーバーは切断について通知されず、通常は接続をタイムアウトする必要があります。ただし、サーバーが接続をタイムアウトする前に、クライアントが再接続に成功する場合があり、サーバーは同じクライアントによる 2 つの明らかな接続がある状態になります。したがって、通常、最初の接続は、私が本当に終了したい接続です。
python - Twisted の pauseProducing() は、dataReceived() への呼び出しがこれ以上ないことを保証しますか?
これは私の質問の拡張です: python twisted: enforcing a single connection per id
IDごとに単一の接続を強制しようとしています。新しい接続が既存の接続と同じ ID で着信した場合、古い接続を強制終了して新しい接続に置き換えようとします。新しいものを一時停止し、古いものを強制終了してから、新しいものを一時停止することでそれを行います。接続でトランスポートを一時停止した後は、それ以上の呼び出しが行われないと想定しましたdataReceived()
が、そうではないようです。
私のログでpauseProducing
は、dataReceived
メソッド内のどこを記録してから戻ってきました。dataReceived
プロダクションの一時停止を解除する呼び出しなしで、同じオブジェクトでへの 2 回目の呼び出しを行った直後 (1 ミリ秒!) 。
dataReceived
afterの呼び出しがもうないという私の仮定は間違っていますpauseProducing
か、それともバグを見つけましたか?