問題タブ [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.
python - self = None は何をしますか?
入ってくるasyncio
パッケージのソースコードを読んでいます。self = None
メソッドの最後にステートメントがあることに注意してください。それは何をするためのものか?
インスタンスが消去されると思いましたが、次のテストではそうではありません。
python - エクゼキュータのconcurrent.futures.Futureからのasyncio yield
重い CPU バウンドの計算を実行するlong_task
関数があり、新しい asyncio フレームワークを使用して非同期にしたいと考えています。結果のlong_task_async
関数はProcessPoolExecutor
、GIL によって制約されないように作業を別のプロセスにオフロードするために a を使用します。
問題は、何らかの理由でconcurrent.futures.Future
from から返されたときに返されたインスタンスProcessPoolExecutor.submit
が をスローすることTypeError
です。これは設計によるものですか?asyncio.Future
それらの先物はクラスと互換性がありませんか? 回避策は何ですか?
また、ジェネレーターはピクル化できないため、クルーチンを に送信するProcessPoolExecutor
と失敗することにも気付きました。これにもきれいな解決策はありますか?
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 から次の回答を受け取りました。随分前。"
python - asyncio.wait からエラーが発生し、try 句でキャッチされるはずの Python コードがキャッチされない
run_until_complete
だから私は私のaccept_connection
方法になるイベントループを持っています
私のhandle_connection
方法は次のようになります
最後に私のhandle_read_from_connection
(現在)は次のようになります。
したがって、このメソッドは常にエラーを発生させ、try catch ステートメントの except ブロックにヒットし、検出された無効なパケットを出力する必要があります。代わりに、トレースバックが発生します。
ここで何が起こっているのか誰か知っていますか?try catch が機能しないのはなぜですか? これらのエラーをキャッチできるようにするにはどうすればよいですか
python - 同じポートでリッスンする Tornado と Autobahn-python
最近、私は小さな個人的なプロジェクトを始めました。asyncio と autobahn-python に基づくリアルタイム Web システムです。ただし、HTTP経由でいくつかの静的ファイルを提供し、同じプロセスから実行したいと考えています。私のHTTPサーバーはTornadoがasyncioイベントループの上にあり、別のポートでtornadoとautobahnのハンドラーを開始する必要があることを除いて、すべてが完全に正常に動作します。これは、私が現在持っているものの簡素化されたバージョンです。
質問: autobahn-wamp と tornado ハンドラーを同じポートでリッスンさせる正しい方法はありますか?
私の最初のアイデアは、ある種の socket.socket ラッパーを実装し、そこに着信メッセージをディスパッチすることでしたが、非常に面倒であることが判明しました。バックエンドは可能な限り移植可能にする必要があるため、外部プロキシを使用したくありません。
また、私は誰かに私のためにそれを実装するように頼んでいるわけではありません (しかし、もちろん、あなたがしたいのであれば可能です!) - アウトバーン/トルネード コードに飛び込む前に、誰かがすでに同様のことを行っているかどうかを知るためだけです。
前もって感謝します!
PS: 英語が下手で申し訳ありません。母国語ではありません。