問題タブ [eventlet]

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

python - Eventlet セマフォ、特定のサブプロセスへの呼び出しを制限する方法は?

特定のサブプロセスの並列数を制限するためにセマフォを作成する必要があります。イベントレット ワーカーで gunicorn を使用しており、多くの同時接続を許可しています。ほとんどの場合、これらはリモート データを待機しています。ただし、それらはすべてある時点で処理フェーズに入り、これにはサブプロセスの呼び出しが含まれます。ただし、このサブプロセスは、メモリ/CPU を大量に消費するため、並行して頻繁に実行しないでください。

正しくthreading.Semaphoremonkey_patch'dであり、gunicorn内のイベントレットで使用できますか?

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

python - Celery プールのタイプと同時実行数

セロリでマルチスレッドの同時実行がどのように機能するかをまとめるのに苦労しています。

使用するデフォルトのタイプは-P eventlet. -P threadsGILが原因で機能しないと想定しており、実際には同時実行性はありません。

しかし、(ここの例から)単純にタスクを指定-P eventletして起動することはできず、 を介して並列タスクを開始する必要があるようにも見えますcelery.groupこれによると、マルチプロセス ワーカーはメッセージを並行して消費することはありません。

つまり、要約すると、タスクの真の並列化が行われているように見えます。マルチプロセッシングを使用する必要があります。イベントレットを使用できますが、タスクの実行方法を変更する必要があります。私のタスクは外部トリガーに応じてランダムに起動するため、いつ、いくつ作成する必要があるのか​​事前にわかりません。

これは正しいです?

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

python - gevent と django-celery で pymysql を使用するにはどうすればよいですか?

私はmanage.pyに以下を入れました(django-celery 3.0.21を使用):

そして、django または celery を起動しようとすると、次のエラーが発生します。

基本的に、イベントレットでセロリを使用したいのですが、これには「環境に優しい」Python MySQL ライブラリが必要です。

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

python - 単一のブロッキング機能がある場合、グリーンスレッドを使用する任意のポイント

Python のグリーン スレッドには、ジョブを完了するための協調的なマルチタスキングがあります。次のシナリオで使用する必要があります。これは、他のスレッドに制御を譲ったり渡したりしないためです。

シナリオ:

ブロッキング機能のコマンドは 1 つだけです。それは、別のマシンへの長時間実行される SSH です。したがって、複数のグリーンスレッドがある場合でも、最初のスレッドが接続を開始するために次のスレッドに制御を渡さないため、複数の SSH 接続が開かない可能性もあります。

マシン上でその SSH を介してインストールが行われます。

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

python - python eventlet fabric で IOError: [Errno 1] Operation not allowed when running celery worker

ブロッキング コールであるリモート マシンでパペット エージェントを実行するタスクで構成されるセロリ ワーカーがあります。イベントレットの恩恵を受けることができる他のタスクには、他の http API フローもあります。

ワーカーを次のように実行すると

次のような例外トレースが表示されます。

私は読んだ: select.select() はディスクファイルでは機能するのに、epoll() では機能しないのはなぜですか? ファブリックまたはそのようなブロッキング呼び出しで動作するイベントレットに問題があることを確認します。この特定のタスクにモンキー パッチを適用しないようにセロリに指示する方法はありますか?

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

python - Celery での Django と並行タスク

取り組む必要がある複雑なシナリオがあります。

Celery を使用してタスクを並行して実行しています。私のタスクには HTTP リクエストが含まれており、そのような目的でイベントレットとともに Celery を使用する予定です。

私のシナリオを説明しましょう:

並行して実行できる2つのタスクと、これら2つのタスクの出力で作業する必要がある3番目のタスクがあるため、Celeryグループを使用して2つのタスクを実行し、Celeryチェーンを使用して出力を3番目のタスクに渡して作業します彼らが終わるとき。

複雑になりました。3 番目のタスクは、並行して実行したい複数のタスクを生成する必要があり、すべての出力をまとめて別のタスクで処理したいと考えています。

そこで、すべての情報を処理するためのチェーンと一緒に、複数のタスクのグループを作成しました。

Celery の並行プリミティブに関する基本的な情報が不足していると思います。うまく機能する 1 つのセロリ タスクがありましたが、それを高速化する必要がありました。

これは、コードの単純化されたサンプルです。

これが私がこの操作を開始する方法です:

task.id を保存し、30 秒ごとにサーバーをプルして、次のようにして結果が得られるかどうかを確認します。