2

いくつかの要件のためにmultiprocessing.managerを使用するプログラムを管理してきましたが、タイムアウト、無効な参照、その他の同様のエラーなどのエラーが安定して発生しています。

ここで、multiprocessing.managerのより開発された代替手段があり、全体的な信頼性が高く、クライアント側での状態追跡が少ないかどうかが気になります。

私はこのテーマでグーグルを試しましたが、キーワードの奇妙な組み合わせのために、私は偽の結果しか受け取りません。

通常のユースケースは次のようになります。

def connect():
  manager = CustomManager(address=manager_address, authkey=manager_authkey)
  manager.connect()
  session = manager.session()
  return session

connect().some_function()
4

1 に答える 1

2

質問とあなたのコメントから判断すると、プロセスを管理するためにもっと堅実なものが必要な場合は、 multiprocessing モジュールを使用するより良い代替手段があります。以下に、検討したい 2 つのオプションを示します。

ギアマン

これは、Gearmanプロジェクトの説明です。

Gearman は、作業を実行するのにより適した他のマシンまたはプロセスに作業を委託するための汎用アプリケーション フレームワークを提供します。

Instagram には Python で記述されたワーカーがあり、Gearman を使用してこれらのジョブをバックグラウンドで実行します。これについては、このWhat Powers Instagram投稿のタスク キュー セクションで読むことができます。

Celery: 分散タスク キュー

Celeryは、分散メッセージ パッシングに基づく非同期タスク キューであり、リアルタイム操作に重点を置いています。Django コミュニティでは非常に人気があります。

どちらのソリューションも非常にスケーラブルで、広く使用されているため、それらの使用方法に関するドキュメントやチュートリアルが多数あります。ただし、彼らはより関与しているため、最初の学習曲線が多くなります。しかし、マルチプロセッシングの限界に達している場合は、時間を投資する価値があると思います。

于 2012-12-22T09:03:10.883 に答える