問題タブ [python-asyncio]

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 投票する
2 に答える
8953 参照

python - self = None は何をしますか?

入ってくるasyncioパッケージのソースコードを読んでいます。self = Noneメソッドの最後にステートメントがあることに注意してください。それは何をするためのものか?

インスタンスが消去されると思いましたが、次のテストではそうではありません。

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

python - エクゼキュータのconcurrent.futures.Futureからのasyncio yield

重い CPU バウンドの計算を実行するlong_task関数があり、新しい asyncio フレームワークを使用して非同期にしたいと考えています。結果のlong_task_async関数はProcessPoolExecutor、GIL によって制約されないように作業を別のプロセスにオフロードするために a を使用します。

問題は、何らかの理由でconcurrent.futures.Futurefrom から返されたときに返されたインスタンスProcessPoolExecutor.submitが をスローすることTypeErrorです。これは設計によるものですか?asyncio.Futureそれらの先物はクラスと互換性がありませんか? 回避策は何ですか?

また、ジェネレーターはピクル化できないため、クルーチンを に送信するProcessPoolExecutorと失敗することにも気付きました。これにもきれいな解決策はありますか?

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

python-3.x - __name__を保持するためにasyncio.coroutineを装飾する方法は?

asyncio.coroutineをラップして完了までにかかった時間を返すデコレータ関数を作成しようとしました。以下のレシピには、期待どおりに機能するコードが含まれています。私の唯一の問題は、@functools.wraps. 元のコルーチンの名前を保持するには? のソースを確認しましたasyncio.

結果:

ご覧のとおりrandom_sleep()、別の名前のジェネレーター オブジェクトを返します。装飾されたコルーチンの名前を保持したいと思います。これが特定の問題であるかどうかはわかりasyncio.coroutinesません。デコレータの順序を変えてコードも試してみましたが、すべて同じ結果になりました。私がコメントすれば@functools.wraps(coro)、私が期待したとおりにrandom_sleep.__name__なります。wrapper

編集: この問題を Python Issue Tracker に投稿し、R. David Murray から次の回答を受け取りました。随分前。"

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

python - asyncio.wait からエラーが発生し、try 句でキャッチされるはずの Python コードがキャッチされない

run_until_completeだから私は私のaccept_connection方法になるイベントループを持っています

私のhandle_connection方法は次のようになります

最後に私のhandle_read_from_connection(現在)は次のようになります。

したがって、このメソッドは常にエラーを発生させ、try catch ステートメントの except ブロックにヒットし、検出された無効なパケットを出力する必要があります。代わりに、トレースバックが発生します。

ここで何が起こっているのか誰か知っていますか?try catch が機能しないのはなぜですか? これらのエラーをキャッチできるようにするにはどうすればよいですか

0 投票する
0 に答える
923 参照

python - 同じポートでリッスンする Tornado と Autobahn-python

最近、私は小さな個人的なプロジェクトを始めました。asyncio と autobahn-python に基づくリアルタイム Web システムです。ただし、HTTP経由でいくつかの静的ファイルを提供し、同じプロセスから実行したいと考えています。私のHTTPサーバーはTornadoがasyncioイベントループの上にあり、別のポートでtornadoとautobahnのハンドラーを開始する必要があることを除いて、すべてが完全に正常に動作します。これは、私が現在持っているものの簡素化されたバージョンです。

質問: autobahn-wamp と tornado ハンドラーを同じポートでリッスンさせる正しい方法はありますか?
私の最初のアイデアは、ある種の socket.socket ラッパーを実装し、そこに着信メッセージをディスパッチすることでしたが、非常に面倒であることが判明しました。バックエンドは可能な限り移植可能にする必要があるため、外部プロキシを使用したくありません。
また、私は誰かに私のためにそれを実装するように頼んでいるわけではありません (しかし、もちろん、あなたがしたいのであれば可能です!) - アウトバーン/トルネード コードに飛び込む前に、誰かがすでに同様のことを行っているかどうかを知るためだけです。
前もって感謝します!
PS: 英語が下手で申し訳ありません。母国語ではありません。