В общем. Есть такая проблема. Нужно сделать систему для распределенного выполнения задач. Причем, задачи эти крутятся долго - могут день, два. И могут добавлятся, так и удалятся.
И вопрос, каким образом лучше сделать такую систему? Характер задач - много общение с БД, сторонними REST API + обработка входящих данных от REST API - проверка по условиям приходящих данных. Те в большей мере IO, но и CPU также есть.
Сейчас есть с горем пополам работающее решение (писало чудо-юдо до меня). Решение состоит в том, чтобы на каждую задачу плодить thread… Сейчас среднее количество таких задач подошло к 150 и решение это работает… Откровенно х$%@#.. В общем, надо переделывать.
P.S Сам пока думаю о asyncio, или redis + multiprocessing + asyncio. Второе не особо нравится из-за нежелания бороться с пересозданием connection и т.п проблем. В идеале бы 1000 таких задач без проблем держать. Сейчас в одном интерпретаторе через потоки 150 и все стало очень медленно. По ресурсам CPU решение не критично. Есть сервер на 32 ядра. Можно грузить хоть все.