redis – srv2
some app – srv3, srv4, srv5, …
Модель одна – на сайте. Больше ничего нет.
Сайте (srv1) просто интерфейс для пользователя, в базе же общая инфа. На srv3, srv4, srv5, некая софтина (далее soft) без каких либо баз (soft – библиотека, в которой через subprocess/some_libs происходит управление системой, что-то делает). И сам soft ничего в базу не пишет. Если б я мог, я б писал пару строк в базу, чтоб пользователь мог увидеть результат работы задачи – максимум false/true и на каком сервере было выполнение. Но я не очень понимаю как это сделать, ведь мне нужна структура базы (model). А городить костыли для того чтоб из soft используя чистый SQL и писать что-то в базу я не горю желанием. А там еще и отношения между моделями…
Как получать результат. Тут я думал о трех вариантах. 1 – очередь, в которую “воркеры” кидают результаты. 2 – читать результат из Redis (лучше). Для этого нужно хранить UID в базе и по нему запрашивать результат в Redis. 3 – API на сайте (жалкое подобие уже почти готово – todo: изучить django rest framework) Это лучше всего, как мне кажется.
Т.е. у меня нет каких-то огромных данных, которые я кидаю между серверами предварительно потроша базу. Отправляю dictionary, получаю dictionary, пишу в базу. В dictionary обычно от 3 до 10 параметров. И то они почти всегда зависят какую кнопку пользователь нажимает на сайте.
И я вижу что Ваш опыт разработки в этой среде выше моего. И Вы упомянули про Alchemy. Я же ничего кроме django ORM не использую, что видимо меня и ограничивает в некоторых телодвижения.
Фактически из всего что я сделал осталось реализовать только получение данных от ворверов (скорее всего для этого буду использовать 2 вариант, а когда “подрасту” 3).
4kpt_IVЧто из себя представляет очередь? Использовать RabbitMQ?
Для обмена данными между “задающим задачу” и “выполняющим задачу” должна быть очередь.