0

redistogo addon:nano pack を使用して、heroku でホストされている django アプリケーションを使用しています。バックグラウンドでタスクを実行するために rq を使用しています。タスクはオンライン ユーザーによって開始されます。接続数の増加に制約があり、リソースが限られているのではないかと心配しています。

現在、単一のワーカーが「n」個のキューで実行されています。各キューは、接続プールからの接続のインスタンスを使用して、「n」個の異なるタイプのタスクを処理します。たとえば、4 人のユーザーが同じタイプのタスクを開始した場合、メインのワーカーに子プロセスを動的に作成させて処理させたいとします。必要なマルチプロセッシングと同時実行性を達成する方法はありますか?

multiprocessing最初は導入せずにモジュールを試しましたLock()。ただし、ユーザーが渡したデータを公開し、以前の要求データで開始関数に上書きします。ロックを適用した後、2 番目のユーザーがリクエストを開始することを制限します。server error - 500

github リンク #1 : チームは PR に取り組んでいるようです。まだリリースされていません!

github link #2 : この投稿は、実行時にワーカーをさらに作成する方法を説明するのに役立ちます。ただし、このソリューションはデータもオーバーライドします。新しいリクエストは、以前のリクエスト データで再度処理されます。

コードが必要な場合はお知らせください。最小限の再現可能なスニペットを投稿しようとします。

考え/提案/ガイドラインはありますか?

4

2 に答える 2

2

AutoWorkerを試す機会はありましたか?

RQ ワーカーを自動的に生成します。

from autoworker import AutoWorker
aw = AutoWorker(queue='high', max_procs=6)
aw.work()

fromモジュールと次のインポートを利用multiprocessingしますStrictRedisredisrq

from rq.contrib.legacy import cleanup_ghosts
from rq.queue import Queue
from rq.worker import Worker, WorkerStatus
于 2019-06-28T22:57:40.457 に答える