問題タブ [deferred]
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 - ねじれ、リアクタが停止したときにスレッドのブロックを解除します。blockingCallFromThread
threads.blockingCallFromThread
原子炉が停止してもブロックし続けるようです。ブロックを解除する方法はありますか?ブロックしている deferred は、反対側からの RPC に依存しており、reactor が停止している場合は確実に着信しません。
python - twined.protocols.ftp.FTPClientおよびDeferreds
ほとんどの場合と同様に、Deferredの使用に慣れるのにしばらく時間がかかりますが、徐々にそこに到達しています。ただし、 TwistedのFTPモジュールを使用しているときに、応答を処理してから、処理された応答を使用して別のFTPコマンドを呼び出す方法がわかりません。出発点として、サンプルのFTPコードを使用しています。
FTPサーバーに接続し、すべての最上位ディレクトリを取得してから、それぞれを入力してすべてのファイルをダウンロードしたいと思います。
最初に接続します:
正常に接続されるため、connectionMade
関数が呼び出されます。
ご覧のとおり、私は列に並んgetSortedDirectories
でからenterDirs
。
私の質問は、どのようにディレクトリを調べるのenterDirs
ですか?
likeftpClient
に渡す必要がありますが、に渡されてからダウンロードリクエストを行いますか?enterDirs
fileList
getSortedDirectories
これが最善のアプローチですか?
python - ツイスト:据え置きがすでに呼び出されているかどうかを確認します
これが私が達成しようとしていることです。情報を得るためにサーバーにリモート呼び出しを行っていますが、情報を待つためにブロックしたいと思います。RPCが応答を受け取ると、遅延が呼び出されるように、遅延を返す関数を作成しました。次に、行くスレッドから呼び出される関数がありますthreads.blockingCallFromThread(reactor, deferredfunc, args)
。
サーバーがダウンするなど、問題が発生した場合、呼び出しのブロックが解除されることはありません。これらの場合を除いて、延期された方がいいと思います。
私は部分的に成功しました。onConnectionLost
接続が失われるとオフになる延期があります。ブロッキング呼び出し関数を次のように変更しました。
これは正常に機能します。サーバーがダウンすると、接続が失われ、エラーバックがトリガーされます。ただし、サーバーがダウンせず、すべてが正常にシャットダウンした場合onConnectionLost
でも、起動され、ここでの匿名コールバックはerrbackをトリガーしようとし、AlreadyCalled
例外が発生します。
延期されたものがすでに解雇されていることを確認するためのきちんとした方法はありますか?ブロックで包むのは避けたいのですがtry/except
、それが唯一の方法であれば、いつでもそれに頼ることができます。
twisted - deferred を使用して無限呼び出しループを作成する
deferred ( http://twistedmatrix.com/documents/current/core/howto/defer.html ) を使用して、関数が deferred チェーンに追加される無限呼び出しループを作成できますか? 私はこれをやろうとしましたが、うまくいきません:
python - Twisted deferred が値を返すまで Python プログラムを待機させる
他のページから情報を取得し、BeautifulSoup と Twisted の getPage を使用してそれらを解析するプログラムがあります。プログラムの後半で、遅延プロセスが作成する情報を出力します。現在、私のプログラムは、異なる情報が返される前に印刷しようとしています。どうすれば待たせることができますか?
python - twisted: コールバックからのエラーの場合、例外トレースはありません
次のコードを検討してください。
実行すると、その例外が食べられます。それはどこに行きましたか?どうすれば表示されるようになりますか? やっdefer.setDebugging(True)
ても効果なし。
これを尋ねるのは、「Deferred で未処理のエラー:」という出力が表示されることもあるからです。この場合、どうすればそれを実現できますか?エラーバックを追加するとdf
、エラーバックが呼び出されて例外が発生することがわかりますが、エラーを出力して他に何もしたくないので、作成するすべての遅延オブジェクトにそのハンドラーを手動で追加したくありません。
gwt - catch で必要なクラスのみをロードするための GWT Deferred Binding
フロントエンドがGWTにある製品があります。多くのクラスが含まれているため(現在、約150のメニューを想像できます)
ユーザーが初めてアクセスすると、読み込みに時間がかかります。(帯域幅が低い場合、これは増加します)
次回以降はキャッチのままなので、帯域幅について心配する必要はありません。
GWT deferred binding を使用して、この初回読み込み時間を短縮できますか?
python - pythontwisted:延期された実行時間を取得します
最初のコールバックが起動されてから最終結果まで、Deferredの実行にかかる時間を知りたいです。
おそらく非侵襲的な方法でそれを行う方法についてのアイデアはありますか(実行時間を追跡するためにコールバック関数を変更しないことを意味します)?
python - ツイスト遅延/コールバックと非同期実行
ツイストを使用してコードをより非同期にする方法を見つけようとしています。
- 関数は遅延オブジェクトを返します
- 次に、コールバックのリストを追加します
- 最初のコールバックは、遅延関数が次のような結果を提供した後に呼び出されます。
deferred_obj.callback
- 次に、コールバックのチェーンで、最初のコールバックがデータを処理し、2番目のコールバックを呼び出します
- や。。など。
ただし、チェーンされたコールバックはチェーンされているため非同期とは見なされず、イベントループは、それ以上なくなるまで、それぞれを同時に起動し続けます。
ただし、遅延オブジェクトがあり、そのコールバックとしてdeferred_obj.callbackをアタッチした場合d.addCallback(deferred_obj.callback)
、deferred_objはデータを待機しているため、これは非同期と見なされ、データを渡すメソッドはデータを待機しています。同様に、ただし、i d.callback'd'オブジェクトがデータを処理すると、deferred_obj.callbackが呼び出されます。ただし、このオブジェクトは遅延されるため、連鎖コールバックの場合とは異なり、非同期で実行されます...正しいですか?
私のコードがすべて非ブロッキングであると仮定すると、これは、連鎖コールバックが非同期ではないのに対し、連鎖遅延は非同期ではないことを意味しますか?
python - python twisted DeferedList ErrorBack ( Deferred の Unhandled error )
以下のコードでは、host:port の組み合わせを渡し、twisted Defered を使用してサーバーから情報を取得しようとしています。私がやろうとしていることの非常に基本的なコードを示しました。ホスト ポートへの接続は、httplib 経由で行われます。ホストが稼働している場合、正しく機能します。正しいコールバック メソッドが呼び出されます。ただし、失敗した場合 (URL の取得に失敗した場合) は、printError 関数には入りません。'Unhandled error in Deferred' エラーが発生し、ループが停止します。誰かがエラーを取り除く方法を教えてください。解決策を提供してください。