簡単な質問:N
作業プロセスと、balancer
現時点で何もしないワーカーを見つけてそこに渡すプロセスを持つことは可能UnitOfWork
ですか?
長い質問: このようなクラスを想像してみてください。魔女は特定のタスクのためにサブクラス化されます:
class UnitOfWork:
def __init__(self, **some_starting_parameters):
pass
def init(self):
# open connections, etc.
def run(self):
# do the job
バランサーとワーカー プロセスを開始します。
balancer = LoadBalancer()
workers = balancer.spawn_workers(10)
作業をデプロイします (バランサーは怠惰なワーカーを見つけてそれにタスクを渡す必要があります。または、すべてのワーカーがビジー状態の場合は、UOW をキューに追加し、ワーカーが解放されるまで待ちます):
balancer.work(UnitOfWork(some=parameters))
# internally, find free worker, pass UOW, ouw.init() + ouw.run()
これは可能ですか(またはクレイジーですか)?
PS私はmultiprocessing
Process
クラスとプロセスプールに精通していますが、
- すべて
Process
のインスタンスがプロセスを開始します (yep :) ) - 固定数のワーカーが必要です Process
汎用的に動作するインスタンスが欲しい