Thanks. That's more or less how I solved these problems too. And the questions are what I had to painstakingly answer myself at work.
BTW, I haven't touched MP in Py for couple of years now, but remember there's some misalignment in concurrent futures between pool.map and pool.submit.
And for exceptions in background processes, I had a shared bool var called "emergency brake", and an error queue.