問題タブ [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 投票する
1 に答える
1284 参照

python - aiohttp 低レベル サーバーの展開オプションの選択

私のaiohttpサーバーの展開オプションで完全に失われました。本番環境でサービスを移動するには複数の方法があり、正しい方法を選択できません。

  1. systemd script/supervisord + api hour 短所: api hour の仕組みがわかりません。サーバーのデーモン コルーチンを制御しているように見えますが、私のサーバーの coro は asyncio.gather 関数で実行されます (低レベルの aiohttp サーバー/接続ハンドラー)。他のコロ (スーパーバイザー/ステートキーパーのクラス永久実行メソッド) と、API 時間で 2 番目のコルーチンを処理するのに問題がある可能性があります
  2. ガンコーン同じだけど1のように
  3. nginx + unix ソケット +systemd スクリプト 短所: デプロイとサポートが非常に難しいように見えます。
  4. systemd スクリプトの下の純粋な aiohttp サーバー: 短所: pid ファイルの処理、低パフォーマンス (?)

私の実行機能は次のようになります。

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

python - Asyncio + aiohttp - redis Pub/Sub と websocket を単一のハンドラで読み書き

現在、aiohttpで遊んで、websocket 接続を使用したモバイル アプリのサーバー アプリケーションとしてどのように機能するかを確認しています。

簡単な「Hello world」の例を次に示します (要旨はこちら):

問題

ここで、以下に説明する構造を使用したいと思います (ノード サーバー = python aiohttp)。より具体的には、asyncio-redisでRedis Pub/Subメカニズムを使用して、websocket 接続とWebsocketEchoHandlerの Redis の両方を読み書きします。

WebsocketEchoHandlerは完全に単純なループなので、これをどのように行うべきかわかりません。Tornadobrükvaを使用する場合は、コールバックのみを使用します。

http://goldfirestudios.com/blog/136/Horizo​​ntally-Scaling-Node.js-and-WebSockets-with-Redis

余分な(おそらくトピック外の)質問

私はすでにRedisを使用しているため、次の 2 つの方法のどちらを使用する必要がありますか。

  1. 「クラシック」Web アプリのように、すべてのコントローラー/ビューを用意し、メッセージングのみにRedisを使用します。
  2. Web アプリは、タスク キュー (最も単純なPython RQ ) としても使用される、クライアントとRedisの間の単なるレイヤーである必要があります。すべてのリクエストはワーカーに委任する必要があります。

編集

http://goldfirestudios.com/blog/136/Horizo​​ntally-Scaling-Node.js-and-WebSockets-with-Redisからの画像

編集2

明確にする必要があるようです。

  • Websocket のみのハンドラーを上に示します
  • Redis Pub/Sub ハンドラは次のようになります。

    このハンドラーは、Redis チャネルch1ch2をサブスクライブし、それらのチャネルから受信したすべてのメッセージを websocket に送信します。

  • このハンドラーが必要です:

    ただし、次のコードは常に順次呼び出されるため、websocket からの読み取りは Redis からの読み取りをブロックします。

    /li>

イベントが2つのソースのいずれかから受信したメッセージであるイベントで読み取りを実行したい。

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

python - aiohttp フォームベースの認証

aiohttpログインページと組み合わせて動作するコードが見つかりません。目標は単純です。ユーザー名とパスワードを使用したフォームベースの認証です。この Cookie は、後続の aiohttp 非同期フェッチ呼び出しで使用したいと考えています。

バージョン間で aiohttp のセッション全体の概念が変更されたように見えるので、最新バージョンでどのように実装できるか興味があります。Cookie を一度取得してから、それを非同期の問題で使用する方法がわかりません。

残念ながら、どこにでもあるスニペットで動作させることができなかったので、完全に機能する例を見たいと思っています。

これが始まりかもしれませんが、よくわかりませんし、すべてをそれに接続する方法も確かにわかりません(まだ必要aiohttp.TCPConnectorですか?) http://aiohttp.readthedocs.org/en/latest/ client_reference.html#aiohttp.client.ClientSession

mechanize を使用した Python 2 での非非同期バージョンの例 (ただし、asyncio などには当然 Python 3 を使用します):

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

python - gunicorn と nginx を使用した aiohttp.web アプリケーションのデプロイ

aiohttp Web アプリをデプロイしようとしていますが、アプリを unix ソケット経由で提供する方法がわかりません。これは、nginx と gunicorn を相互に通信させるために必要だと思います。

app.py として保存された aiohttp ドキュメントからの簡単なサンプル アプリ:

これを gunicorn で実行すると、直接動作します:

しかし、代わりに UNIX ソケットにバインドしようとすると、次のエラーが発生します。

トレースバック:

aiohttp の問題 ( https://github.com/KeepSafe/aiohttp/issues/136 ) で、ソケットを使用してソケットを作成し、 loop.create_server() 関数のパラメーターとして配置するものに遭遇しましたが、できませんでした何も機能しません。(彼のコードのアプリが同じ web.Application オブジェクトかどうかもわかりません)

これを機能させる方法を知っている人はいますか?ありがとう!

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

python - aiohttp はしばらくすると送信を停止します

エラーが発生した場合に備えて、同時HTTPリクエストをサーバーに送信する必要があるコードをいくつか書いています。再試行する必要があります。実行していると、送信が速くなり、数分後に送信速度が 0 に低下します。何かがロックされて解放されず、送信が停止するようです。

データを送信する関数はこれです

コネクタは初期化されています

send 関数は、800 個のタスクをリストに追加することによって呼び出され、それらが io を詰まらせないように待機しています。

私はそれをデバッグしたり、問題の原因を突き止めたりするのに問題があります。誰も手がかりを持っていますか?

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

python - Python aiohttp リクエストは停止しましたが、例外は発生しませんでした

aiohttpURLをリクエストするために使用します。ほとんどの場合、正常に実行されますが、例外が発生せずに停止することがあります。

コードでわかるように、すべての例外をキャッチしますが、停止すると例外のログは出力されません。

ログは次のようになります。

しかし、「res = yield from r.json()」は印刷されず、停止し、例外はスローされません。

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

python - フラスコ + asyncio

私の目標は、アプリケーションを python2 から python3 にアップグレードすることです。このアプリケーションは、flask、flask-admin、gevent (コルーチン)、socketio のパッケージを使用します。フラスコは去ることが決定され、残りのパッケージは交換されました。パッケージを置き換えるいくつかの試みがありました:

  1. Tornado + SockJS: SockJS チャネルがないため、多くの余分なコード
  2. Flask-aiohttp : 認証中に request.form['username'] がエラーをスローします。

トレースバック (最新の呼び出しが最後):

では、Flask-aiohttp の作業に対して何ができるでしょうか? または、代わりにどのパッケージを使用しますか?

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

python - Aiohttp wsgi ハンドラーが機能しない

Flask アプリケーションを aiohttp でラップする必要があります。起動すると、エラーが発生します:

コード:

この例のようにルートを変更すると

ValueError が発生します: パスは / で開始する必要があります。私は何を間違っていますか?

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

python-3.x - gunicorn がホストする aiohttp アプリの構成

私は最初のaiohttpベースの REST に似たサービスを実装しました。これはおもちゃの例として非常にうまく機能します。を使用して実行したいと思いますgunicorn。私が見つけたすべての例は、いくつかのモジュールで準備されたアプリケーションを指定しており、それは によってホストされていgunicornます。これにより、インポート時にアプリケーションをセットアップする必要があり、これは好ましくありません。使用されている構成ファイル (development.ini、production.ini) を指定Pyramidし、その ini ファイルに基づいてアプリケーションをセットアップしたいと思います。

これは多かれ少なかれすべての python web フレームワークに共通ですが、aiohttp + gunicorn でそれを行う方法がわかりません。これらのツールを使用して開発設定と本番設定を切り替える最もスマートな方法は何ですか?