問題タブ [aiohttp]
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 - aiohttp.Timeout および asyncio.InvalidStateError
私はPython 3.4.3を使用して、複数のURLに定期的にリクエストを送信しています。これが私が書いたコルーチンです (コードを簡素化するためにいくつかのエラー処理を省略しました):
を使用して複数のping
コルーチンを開始してasyncio.gather
います。しかし、サーバーの応答が長すぎると、InvalidStateError
例外が発生することがあります。
スクリプトは引き続き機能しますが、このトレースバックを黙らせるにはどうすればよいですか? それはバグですか、それとも私が間違っていることですか?
私が持っている唯一の考えは、Webサーバーが最終的に応答するときに、asyncio(またはaiohttp)Future
がすでにキャンセルされた結果にresultを設定しようとすることです。
編集:
ping
そのコルーチンを開始する方法は次のとおりです。
python-3.x - フラスコアプリで常に404を返すgaiohttpワーカーを持つgunicorn
nginxプロキシの背後でgunicornを使用してフラスコアプリを実行しており、gaiohttpワーカーを機能させようとしています。gaiohttp ワーカーが選択されている場合、アプリはすべての URL に対して 404 を返すだけです。
sync または gevent ワーカーを使用すると、すべて正常に動作します。また、gunicorn と gaiohttp に直接実行していない、つまり nginx を使用していない場合でも問題なく動作します。
私は見つけることができるすべてを読みました。
何か不足していますか?nginx プロキシの背後で実行している場合、gaiohttp ワーカーは有効ですか?
私のnginx設定:
ガンコーン:
ガンコーンなどの最新バージョンを使用するなど。
python-asyncio - クライアントが aiohttp 要求ハンドラーからの接続を閉じたことを検出する
受信したデータをクライアントにプッシュする、長時間実行される要求があります。ただし、リクエストには、クライアントが切断されるたびにクリーンアップしたいサーバー側で作成されたいくつかのリソースが必要です。ドキュメントを調べましたが、それがいつ発生したかを検出する方法が見つからないようです。何か案は?
python-3.x - Python asyncio: __aiter__() メソッドをモックする方法は?
を使用して WebSocket でメッセージをリッスンするコードがありますaiohttp
。
次のようになります。
(元のコード)ws
のインスタンスはどこにありますかaiohttp.web.WebSocketResponse()
私のテストでは、モックWebSocketResponse()
とその__aiter__
メソッド:
テストを実行すると、次のようなエラー メッセージが表示されて失敗します。
「async for」には
__aiter__
メソッドを持つオブジェクトが必要です。MagicMock を取得しました
__aiter__()
そのため、嘲笑されたことがないかのように動作します。この場合、どのように正しいモッキングを達成することになっていますか?
アップデート:
今のところ、コードをテスト可能にするための回避策を見つけましたが、元の質問で説明されている問題に対処する方法を誰かが教えてくれれば幸いです。
python-3.x - aiohttp リクエストとそのレスポンスの関連付け
非常に簡単に言えば、aiohttp
非同期 HTTP 要求からの応答を辞書キーなどの識別子に関連付けて、どの応答がどの要求に対応しているかがわかるようにしたいだけです。
たとえば、以下の関数は、dict 値1
、2
およびでサフィックスされた URI を呼び出します3
。各結果に関連付けられたキーを返すように変更するにはどうすればよいでしょうか? どのリクエストがどれであるかを追跡できるようにする必要があるだけです…asyncio
出力 (省略):
望ましい出力 (例):
python - python anaconda - 異なる python バージョンのモジュールを管理する
Python
私のAnacondaには、Mac(2.7と3.5.1)の2つのバージョンがあります。私はいつでも
自動的に/anaconda/lib/python2.7/site-packages
フォルダに入ります。今私は学びたいとaiohttp
私はそれをインストールするとき
エラーが発生します:
Raise RuntimeError("aiohttp には Python 3.4.1+ が必要です") RuntimeError: aiohttp には Python 3.4.1+ が必要です
/private/var/folders/c2/3yxfnvc51fng531jz312t00m0000gn/T/pip-build-m_mCpM/aiohttp/
- どうすればこれを解決できますか?
- の 2 つのバージョンを管理する最善の方法は何
Python
ですかAnaconda
?
python - ソックスプロキシでaiohttpクライアントを使用する方法はありますか?
ソックスプロキシをサポートaiohttp.ProxyConnector
していないようです。これに対する回避策はありますか? アドバイスをいただければ幸いです。
python - Python3 モジュールのインストール
Python用のモジュールaiohttpをインストールしようとしているので、uvloopでファイルをダウンロードするためのシステムをセットアップできます。ただし、aiohttp を抽出したフォルダーに移動して次のコマンドを実行すると、問題が発生します。
周りを見回したところ、一部の人々がこの問題を抱えていることがわかりましたが、python-setuptools または python3-setuptools パッケージを入手することで修正されました。だから私はそれをやろうとしましたが、これは私が得る出力です:
これにより、 python-setuptools が既にインストールされていると思います! ここからどこへ行けばいいのかわからない。わかりやすくするために、試してみました
しかし、aiohttp をインストールするには Python 3.4.1+ が必要なため、エラーが発生しました。
HP Elitebook 8440p で Linux Mint 17.2 Qiana を実行しています。私が何をすべきかについて何か提案はありますか?前もって感謝します!