WorkerManagerΒΆ
Method WorkerManager.run(timeout)
(see diagram below) tries to process as
many tasks from queue as possible within specified timeout. The task
heavy-lifting is done in separate independent background daemons,
one for each task (daemons follow BackgroundWorker class
abstraction, see
e.g. Backend build process example).
Note that tasks which are not finished after one run() call are still tracked in internal queue structure, and will be finished in one of the subsequent run() calls.
Since the spawned workers are background (daemon) jobs, we use Redis DB for
WorkerManager <-> BackgroundWorker
communication; that said WM
collects
the job status from the background worker.