問題タブ [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.

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

python - twisted.internet.udp から Port クラスをデコレートします

twisted.internet.udp から Port クラスを装飾する可能性はありますか? Port クラスのいくつかのメソッドの動作を変更して、時々パケットが失われたり、複製されたり、遅延したりしたいと考えています。私の目標は、いくつかの摂動を「シミュレート」し、(UDP 上で設計された) 私自身のプロトコルが正しく動作するかどうかをテストすることです。

何か案が ?

前もって感謝します

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

windows - ツイストでのiocpreactorリリースステータス

Windows 2008のデフォルトのselectリアクターに問題があります。Windowsの理想的なソリューションのように見える代替リアクター、iocpreactorがあります。ドキュメントには実験的なものとしてリストされており、「ほぼ準備ができています」。

これは実際にはどういう意味ですか?これまでのところ、問題なくテストしてきました。一般的に使用されていますか?他の誰かがそれをお勧めできますか?

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

python - Python twisted でのループ呼び出しが機能しない

私はリアルタイムプロジェクトにpython twistedを使用しています。

説明: リモート マシンにリクエストを送信する URL の html ページをプルしています。そのため、リモート マシンにリクエストを送信し、url パラメータをポストすることによって結果を非同期的に取得するスケジューラをデータベース マシンに維持しています。 .

したがって、ツイストでは、結果の成功コールバック チェーンまたはエラー コールバック チェーンを取得するかどうかにかかわらず、「LoopingCall サービス」でメイン メソッドを 2 分ごとに実行します。メイン メソッドは 2 分ごとに開始します。

このシナリオでは、1 つの要求が戻ってこない場合にエラーが発生します。他のリモート マシンは引き続きサービスに使用できます。したがって、どのような場合でも、メイン メソッドは 2 分ごとに呼び出される必要があります。エラー。

説明:

クライアントがうまく応答しない場合、エラーが発生することがあります。

リモートマシンがフラッシュされ、数分後にサービスを提供する準備が整う可能性があるため、service_avail_check を再度呼び出す必要がありますが、頻繁に呼び出しています。

しかし、それは呼び出されない代わりに、非常に多くの時間をハングアップします。

この問題を助けていただけますか?

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

python - Twisted:pyglet-twistedを使用する場合、EndPointからDeferredはどのように呼び出されますか

以下のコードは、AMPに関するTwistedのドキュメント(リンク)から抜粋したものです。コールバックがdに追加されると、自動的に「プロトコル」引数が追加され、reactor.run()が呼び出されたときにdeferredが自動的に実行されます。

私のコードでは、cocos2dでpyglet-twisted(link)を使用していることを除いて、すべてがまったく同じです。そのため、reactorはアプリケーションと同時に起動するため、reactor.run()を呼び出すことはできません。

react.run()を呼び出すと、reactorがすでに実行されているというエラーが表示されます。

そうしないと、延期されたものは呼び出されないようです。

私はreactor.callLater、reactor.callWhenRunningでそれを呼び出そうとしましたが、両方とも引数が必要です。Noneの受け渡しは機能しません。

だから私の質問は、reactor.run()を呼び出さずにこれをこの遅延実行にするにはどうすればよいかということです。

ありがとう!

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

python - Webインターフェイスからツイストベースのサーバーを制御しますか?

Twistedを使用してカスタムプロトコルでサーバーを作成し、特定のポート(ポート1234など)でサーバーに接続するクライアントがあります。ある種のWebページに基づいてサーバーの制御インターフェースを作成しようとしています。これまでの私の調査では、Nevowが人気のある選択肢であることが示されていますが、必要なのは非常に単純なものだけです。

たとえば、ブラウザがポート8080でhello worldページにアクセスするたびに、1234で接続されているクライアントにメッセージを送信するとします。

これら2つをどのように接続できるかについて少し混乱しています。HelloResource.render_GETからServer.messageを呼び出す必要があると思いますか?

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

python - 最大再帰深度に到達する遅延遅延リスト

MongoDBにアップサートするドキュメントのリストがたくさんあります(おそらくn> 100000)。100000の遅延を一度に作成したくないのですが、MongoDBへの接続プールがあり、それを十分に活用したいので、各クエリを順番に実行して待機したくありません。だから私は、によって消費される延期を生成するジェネレーター関数を持っていDeferredLazyListます。

これは、延期されたアップサートの生成とをリンクするコードですDeferredLazyList

これはDeferredListDeferredLazyListに似ていますが、遅延のリストを受け入れる代わりに、それを待つためにイテレータを受け入れます。延期されたものはイテレータから取得されますが、同時にアクティブなのは延期されたものだけです。これは、遅延が生成されるときに作成されるため、遅延を効果的にバッチ処理するために使用されます。count

問題は、延期されたものがすでに設定されているgenerate_update_deferreds()ものから生成され、それが再帰的に自分自身を呼び出す原因になっている場合です。.calledTrueDeferredLazyList

何が起こっているのですか:

  1. DeferredLazyList.__init__()self.__next_save_result()は回と呼ばれcountます(たとえば5)。

  2. への各呼び出しは、self.__next_save_result()から延期された1を消費しself.__iter、それ自体がコールバックとして追加されます。

  3. 生成されたdeferredがに.called設定されているためTrued.addCallbacks(self.__next_save_result, ...)すぐに呼び出し、再帰の深さに達したためself.__next_save_result()にaが発生するまでこのループが続きます。RuntimeError

これが問題の原因であることを確認するために、再帰制限に達する前にスタックトレースを印刷しました。

どんな助けでも大歓迎です。ちなみに、私はTwisted12.1.0でPython2.7.3を実行していますが、MongoDBのものは、実際にはコンテキストを理解するためにのみ関連しています。


それぞれの延期からの結果が欲しかったのですが、cooperate()それらを返さないので、CooperativeTasksに渡す前に各延期にコールバックを追加しました。

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

python - TCP サーバーがクライアントからの接続をツイストで受け入れようとすると、「未処理のエラー」が発生します。

上記のコードは正常に実行されていますが、TCP(telnet localhost 80)を開こうとすると。

エラーが発生します:

誰かが解決策を知っているなら、親切に助けてください。私はツイストが初めてです。

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

python - Python Raspberry Pi アプリケーションを Twisted に移植する - ハードウェアをポーリングするバックグラウンド スレッドを処理する方法

小さな Raspberry Pi シングルボード コンピューターを使用する小さなデバイスを作成して、リモートで猫におやつを与えたり、Web カメラで猫とその周囲を監視したりできるようにしました。\

このソフトウェアは、(デバイスのリモート コントロールを可能にする) Web サイトをホストする単一の Python モジュール、ハードウェアを管理し、単純なステート マシンを実行する「スレッド」、および Web カメラを介して画像をキャプチャする「スレッド」で構成されます。モーション検出アルゴリズムを実行して、猫がいる時間にキャプチャを制限します。Web サイトは、jQuery を使用してサーバーへの Ajax コールバックを行う Javascript を含む単一の HTML ページをホストします。

ソフトウェアはすべて動作していますが、Web サイトの最初の読み込み時にページを返すのが非常に遅い場合があることがわかりました。問題は、GIL と Python の単純な http サーバー クラスの設計による、Python の一般的なシングル スレッドの性質だと思います。

アプリケーションを Twisted に移行することに興味がありますが、カメラとハードウェア ステート マシンを処理する 2 つのスレッドを移植する方法がわかりません。両方のスレッドがループを実行し、効果的にポーリングしますが、ループの反復ごとにわずかな遅延があります。

ありがとう

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

python - ツイスト: サービスの停止シーケンスをテストする

「正常な」シャットダウンを実装するために、シャットダウン時にかなり複雑なアカウンティングを行う必要がある複雑なマルチサービスがあります。

試用版のテストを作成しようとしています。問題は、リアクターが実質的にプロセス グローバル リソースであり、サービスをシャットダウンすると、トライアルのリアクターも停止することになり、(もちろん) 爆発します。

これはトライアルではノーノーであると文書化されていますが、テストを作成できるようにする何らかの回避策が必要です。私が最初に考えたのはmock.Mockを使用することでしたが、これはシャットダウン中のリアクターを実際には使用していないことを意味し、実際のシャットダウン プロセスに忠実な動作が得られません。

必要なのは、トライアルのリアクターをテスト中のサービスのリアクターから分離する方法だと思います。テストシステムとテスト中のシステムの間で変更可能なリソースを共有することは、確かにアンチパターンです。