У меня есть скрипт на питоне, который выполняется на хосте. Мне нужно стартовать (1) некоторое количество этих скриптов, создавая задачи (параметры к скрипту) с веб страницы. При этом, скрипт может выполняться или пока не упадет, или пока не остановишь. Нужно знать в каком состоянии (2) находится задача, то есть выполнение скрипта, но и возможность остановить (3) выполнение скрипта с веб странички. Иногда нужно получать результат (4), который выдает скрипт (словарь например), а не просто “таска упала” или “выполнилась успешно”. Сам скрипт коммитит в бд (5), а сайт использует эту бд для создания отчетов (6).
Возможно, мне понадобиться “общаться” с выполняемыми задачами (7)
Пока у меня нет понимания как построить архитектуру этого приложения.
Я думаю, сайт складывает в БД-для-задач задачи, “менеджер” мониторит эту БД по расписанию, достает задачи и запускает скрипты на исполнение. Скрипт записывает в БД-для-отчетов результаты выполнения. Сайт берет из БД записи и формирует полный отчет.
Как останавливать задачу с сайта? Скажем у задач есть состояния NEW, STARTED, CANCELED, COMPLETED. Тогда с сайта можно менять состояние задачи в БД на CANCELED. Но тогда придётся на стороне сайта постоянно опрашивать состояния этих задач в . В общем начинаются большие проблемы с синхронизацией.
Другая проблема это общение “менеждера” с множеством запущенных задач. Общение должно быть двухстороннее. Потому как я хочу получать уведомления и данные от задачи. И подавать сигнал, скажем, на остановку задачи. Думаю общение можно сделать с помощью 0MQ (ZeroMQ)
Как-то так. Очень большая вероятность, что тут у меня велосипед на велосипеде. Подскажите что можно придумать для решения моей задачи.