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

0 投票する
7 に答える
142392 参照

python - asyncio でリクエストを使用するにはどうすればよいですか?

で並列 http 要求タスクを実行したいのですが、それでは のイベント ループがブロックasyncioされることがわかりました。aiohttpを見つけましたが、http プロキシを使用して http リクエストのサービスを提供できませんでした。python-requestsasyncio

を使用して非同期の http 要求を行う方法があるかどうかを知りたいですasyncio

0 投票する
3 に答える
3586 参照

python-3.x - Python で asyncio イベント ループを閉じると、最後に例外が発生する

Windows 上の Python 3.4 で asyncio と aiohttp を使用する https 要求の場合、2 つのイベント ループを使用する必要があります。シェル コマンドを実行するための ProactorEventLoop と、HTTPS 要求のためのデフォルトのイベント ループ。残念ながら、ProactorEventLoop は HTTPS コマンドでは機能しません。

次のコードは、新しく作成したデフォルトのイベント ループを使用し、Windows で最後にそれを閉じようとするとどうなるかを示しています。loop.close以下に示すように最後に呼び出すと、最後に例外が発生します。

コメントアウトすると例外が削除されますが、その理由はわかりません。唯一無二

ありがとう、グリーンアージ

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

python - Python aiohttp フレームワークでプロキシ サポートをどのように利用しますか

os.environ['http_proxy']まだ機能しますか?また、リクエストごとにプロキシを利用する方法は?

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

python-3.x - Python3 asyncio 同時 HTTP get 要求で接続が閉じない

Python3.4 の asyncio ライブラリを使い始めたばかりで、一度に 50 個の Web ページを同時に取得しようとする小さなプログラムを作成しました。「開いているファイルが多すぎます」という例外で数百回のリクエストを行うと、プログラムが異常終了します。

私の fetch メソッドは「response.read_and_close()」メソッド呼び出しで接続を閉じると思いました。

ここで何が起こっているのですか?私はこの問題に正しい方法で取り組んでいますか?

私が得ているエラーは次のとおりです。

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

python - aiohttp で http 応答エンコーディングを検出する

asyncio非同期 Web クローラーを作成する方法を学ぼうとしています。以下は、フレームワークをテストするための粗雑なクローラーです。

非常asyncioによく文書化されているように見えますが、文書化aiohttpがほとんどないように思われるため、自分でいくつかのことを解決するのに苦労しています.

まず、ページ応答のエンコーディングを検出する方法はありますか? 次に、接続がセッション内で維持されるように要求できますか? または、これはデフォルトで True のようrequestsですか?

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

cookies - Asyncio でセッション Cookie をサポート

Asyncio で使用する必要があるスクレイピング スクリプトを Python で作成しました。また、Web Cookie をサポートするためにも必要です。元々は urllib.request で作成されたもので、スクリプトは次のようになります。

これは今のところ問題なく動作しますが、Asyncio でマルチスレッド化する必要もあります。それに関するドキュメントが見つからなかったので、次のことを試しました。

コンテキストの問題として、私がスクレイピングしようとしているページは、読み込み時にセッション Cookie の存在をテストし、存在しない場合は作成し、それ自体にリダイレクトするような方法で作成されています。さて、単純なスクレイピング アプローチでは、私はループに陥っており、Asyncio/Aiohttp では何も起こりません。

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

python - Python で asyncio を使用して Web タスクを並列化する

私は asyncio と aiohttp に頭を悩ませようとしていますが、数年ぶりにプログラミングをすると、まったく愚かで無能だと感じます。変な禅の方法で、それは一種の美しいものです。しかし、残念ながら、やらなければならない仕事があります。

Web サイトへのサインアップ、データの取得、動作など、Web 上で多くの素晴らしいことを実行できる既存のクラスがあります。そして今、登録するには、これらの小さな働きバチが 100 から 1000 匹必要です。コードはおおよそ次のようになります。

ご覧のとおり、POST リクエストを行うために requests モジュールを使用しています。ただし、これはブロックしているため、ワーカー N+1 のサインアップを開始する前に、ワーカー N のサインアップが完了するまで待つ必要があります。幸いなことに、Worker クラスの元の作成者 (魅力的にマルクス主義者に聞こえます) は無限の知恵ですべての HTTP 呼び出しをself.make_requestメソッドでラップしたため、Worker 全体を非ブロッキングにすることは、要求ライブラリを非ブロッキングに交換するだけで済みます。 1 つ aaaaand ボブはあなたの叔父ですよね? これは私が得た距離です:

しかし、これはAttributeError: 'generator' object has no attribute 'get'signupが行うメソッドで を発生させますself.user_id = data.get("user_id")。それ以上に、私はまだきちんとした辞書に労働者を持っていません。asyncio の仕組みを完全に誤解している可能性が高いことは承知していますが、さまざまなドキュメント、David Beazly による驚異的なチュートリアル、およびそれらを理解するのに十分な大量のおもちゃの例を読んで、すでに 1 日を費やしました。この状況に適用するのは簡単です。ワーカーと非同期ループをどのように構成して、100 人のワーカーを並行してサインアップし、最終的にサインアップ後にすべてのワーカーのリストを取得する必要がありますか?

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

python - asyncio を使用した複数のループ

asyncioで複数のループを持つことは可能ですか? 応答が「はい」の場合、どうすればそれを行うことができますか? 私の使用例は次のとおりです: * 非同期で Web サイトのリストから URL を抽出します * 各「サブ URL リスト」について、それらを async/ でクロールします

URL を抽出する例:

このコードを実行すると、Python が 2 番目のループを起動しようとするとエラーが発生し、ループが既に実行されていると表示されます。

PS: 私のモジュール「extractsuburls」は aiohttp を使用して Web リクエストを実行します。

編集:

さて、私はこの解決策を試しました:

しかし、私はこのエラーを持っています: ループ引数は Future と一致する必要があります

何か案が?

0 投票する
3 に答える
54256 参照

python - Python asyncio とスレッドを組み合わせるには?

POST イベントをリッスンしてさまざまなフィーダーからリアルタイム イベントを収集する Python asyncio と aiohttp を使用して、 RESTful マイクロサービスを正常に構築しました。

次に、メモリ内構造を構築して、最後の 24 時間のイベントをネストされた defaultdict/deque 構造にキャッシュします。

ここで、できればピクルを使用して、その構造をディスクに定期的にチェックポイントしたいと思います。

メモリ構造は 100MB を超える可能性があるため、構造のチェックポイントにかかる時間、着信イベントの処理を遅らせたくありません。

構造のスナップショット コピー (deepcopy など) を作成してから、時間をかけてディスクに書き込み、事前に設定した時間間隔で繰り返します。

スレッドを組み合わせる方法の例を探していました (そして、スレッドはこれに対する最良の解決策でもありますか?) とその目的のための asyncio ですが、私を助けるものを見つけることができませんでした.

始めるための指針は大歓迎です!