問題タブ [gevent]

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 に答える
2290 参照

python - gevent で「Omegle」のようなランダム チャットを作成するにはどうすればよいですか?

gevent のチュートリアルとドキュメントを検索しましたが、多くはないようです。私は数年間 Python をコーディングしており、PHP + JavaScript + jQuery もコーディングできます。

では、1 人のランダムな人が接続し、別の人が接続するのを待つ Omeglish チャットを作成するにはどうすればよいでしょうか? Omegle が gevent を使用していることは理解していますが、私のサイトでは 200 ~ 1000 人を同時に収容する必要があります。

サーバー側に加えて、完全に機能するクライアント側も必要であり、jQuery/JavaScript で作成する必要があると思います。

コーディング部分についてはほとんど助けが必要です。私は Python をうまくコーディングできますが、そのようなチャット システムをどのように作成すればよいか、どのような Python ライブラリが最適かはわかりません。

ライブラリは gevent である必要はありませんが、このようなものには非常に適していると聞きました。ありがとう。

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

python - py.test の実行が成功した後のモジュール 'threading' の KeyError

py.test で一連のテストを実行しています。彼らは合格します。イッピー!しかし、私はこのメッセージを受け取っています:

そのソースを追跡するにはどうすればよいですか?(私はスレッドを直接使用していませんが、gevent を使用しています。)

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

python - telnet セッションで入力行を削除

telnet セッションの入力行をバッファーから削除して、Enter キーを押すと、入力したテキストが削除されますが、telnet サーバーには送信されますか?

カーソルを行の先頭に移動し、その行を新しい行で上書きする特定の文字を送信する方法があることは知っていますが、新しい行の文字がバッファに入れられるため、それを超えることはできません. これを回避する方法はありますか?

例: (2 行目はユーザー入力です)

次に、Enter キーを押すと、スクリーン バッファが次のように表示されます。

アップデート:

重要なのは、ローカル入力をエコーし​​ないモードにtelnetクライアントを設定することだと思います。クライアントにいくつかのマジック キャラクタを送信すると、モードを変更できることがわかりました。この例を見つけましたが、それが何を意味するのかわかりませんが、入力が telnet クライアントに表示されなくなります。ただし、入力がサーバーに送信されることはないため、答えの半分に過ぎません。

たぶん、入力を1行ずつ読んでいるからでしょう。char by charとして読みたいと思います。ただし、これを変更する方法がわかりません:

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

python - PyPy および PyPy + greenlet でのスタックレス - 違い

PyPy の新しいバージョンには、統合されたStacklessが同梱されています。私が知る限り、同梱されている Stackless は、2001 年から継続されている元の Stackless と同じではありません。つまり、主にディスパッチャーを備えたグリーン スレッド フレームワークです。

Greenletは Stackless のスピンであり、拡張モジュールとして Stackless のグリーン スレッド機能を提供します。

PyPy + greenlet + 一部のディスパッチャー (例: gevent )よりも、PyPyから「ネイティブ」スタックレスを使用する利点はあります? または問題は、PyPy でこれらのタイプの拡張機能を使用できないことですか? より具体的に言うと、PyPyにはgreenletの独自の実装があることを知っています( continuletに基づいています)。しかし、PyPyで外部グリーンレットをgeventと内部グリーンレットにリンクする可能性に興味があります。

PyPy には、標準ライブラリの代わりにスタックレスを使用するための非同期 IO ライブラリが同梱されていますか?

スタックレス自体と、Python に対する他の非同期ライト スレッド拡張機能 (eventlet、gevent、twisted...) を知っています。だから私はそれらの違いを見ているのではなく、スタックレスで構築されたpypyから得られる利点です。

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

python - gevent.WSGIServer リクエスト方法の謎

gevent の WSGIServer を実行すると、非常に奇妙な動作が発生します。通過するすべてのリクエストが、そのメソッドを正しく解釈していないようです..

次のリクエストを送信した場合:

これはコンソールに表示されるものです:

完全を期すために、これは私が実行しているスクリプトです。

何が起こっているのでしょうか?

編集:

私はgeventバージョンを使用しています:0.13.0

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

python - Python、gevent、urllib2.urlopen.read()、ダウンロードアクセラレータ

Linux用のダウンロードアクセラレータを構築しようとしています。私のプログラムはgevent、os、およびurllib2を利用しています。私のプログラムはURLを受け取り、同時にファイルをダウンロードしようとします。私のコードはすべて有効です。私の唯一の問題は、urllib2.urlopen.read()が.read()関数の同時実行をブロックしていることです。

これは私に投げられた例外です。

私のプログラムは、次を呼び出してURLからファイルのバイトサイズを取得することで機能します。

ファイルサイズを除数で割って、ダウンロードプロセスを部分に分割します。この例では、ダウンロードを10の部分に分割しています。

各グリーンレットは、このファションでコマンドを実行します。

これがpastieでホストされている私のコードへのリンクです:http ://pastie.org/3253705

お手伝いありがとう!

参考:Ubuntu11.10で実行しています。

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

python - なぜpythongeventはシリアルより遅いのですか?

geventを使用して同時ダウンロードを実行しています。この
例 に基づくと、これは次のコードです。

私の問題は、上記のコードがシリアルバージョンよりもはるかに時間がかかり、ほとんどの場合タイムアウトになることです。これがはるかに高速なシリアルバージョンです。

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

python - Geventsを使用して非同期で関数を生成します

私はGevents(asych機能用のPythonライブラリ)を実行していて、それがどのように機能するかを理解するために非常に小さなプログラムを作成しましたが、結果は非常に困惑しました。以下はコードです

何度実行しても出力は得られます

geventチュートリアルの一部として提示された同様の例があります。

非同期機能はかなり明白です。私が行ったのは、コードにスリープ機能を追加することだけです。出力はこのようなものであってはなりませんか?

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

python - スレッドでgeventモンキーパッチを使用すると、スレッドが連続して機能します

私はgeventを使用していて、すべてにモンキーパッチを適用しています。
モンキーパッチにより、スレッドが連続して機能するようです。

私のコード:

そのため、スレッドは期待どおりに機能していません。
しかし、私がそれを取り除くならば、monkey.patch_all()それはうまく働いています。
問題は、monkey.patch_all()geventを使用するためにが必要なことです(上記のコードに示されています)

私の解決策:

私は変更しました

だから私はスレッドにパッチを当てていません。

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

python - すべてのキュー アイテムが使い果たされても、Gevent スレッドが終了しない

Gevent で単純なプロデューサー/コンシューマー システムをセットアップしようとしていますが、スクリプトが終了しません。

Gevent の使用に関する良い例/チュートリアルを見つけることができなかったので、上に貼り付けたものは、インターネットから集めたものです。

複数のワーカーがアクティブになり、アイテムがキューに入りますが、キュー内のすべてが終了しても、メイン プログラムは終了しません。を押さなければなりませんCTRL ^ C

私は何を間違っていますか?

ありがとう。

余談ですが、私のスクリプトで改善できる点があれば、お知らせください。キューが空かどうかを確認するなどの簡単なこと。