Я пишу веб-приложение в Python (Django), которое будет выполнять задачи/процесс сбоку, как правило, сетевые сканирование. Я хотел бы, чтобы пользователь смог завершить сканирование, просмотреть его статус или результаты в режиме реального времени.Создание многопроцессного демона
Я думал, один из лучших способов сделать это, чтобы иметь работу менеджер демон, который является в одиночку процессом секса, что:
- Принимает новые рабочие места через соединение TCP.
- Принимает пользовательские команды, как правило, для завершения или перезапуска процесса.
- Отчеты о статусе работы.
Я борюсь со структурой этого кода. Я думаю, что TCP-порт процесса daemon будет принимать новые задания. Затем он создаст os.fork(), который сам создаст os.fork(). Вторая вилка будет выполнять os.execv() для nmap. Первый os.fork() будет контролировать вторую вилку (как?), И когда она будет завершена, она сообщит об этом мастер-демона. Первая вилка также должна иметь возможность завершить второй дочерний процесс.
Как это звучит? Есть ли какие-либо структуры этого уже сделано? Мне бы очень хотелось воссоздать колесо.
И, наконец, как дочерний процесс узнает, что второй ребенок, который запускает os.execv(), завершен? Или все еще работает? Мне не хотелось бы постоянно опробовать список процессов.
И, как я уже сказал, это должно быть сделано на Python.
Вы в основном просто описали сельдерей ... –
Я описал сельдерей? Я понятия не имею, что вы подразумеваете под этим. –
Сельдерей - это бегун с распределенным заданием python http://www.celeryproject.org/. Тем не менее, вы, по сути, не описали сельдерей, вы в основном описали стандартного, запущенного, сетевого демона. Вы можете делать то, что вы просите в python, но поскольку вы специально сказали, что не хотите изобретать колесо, я предлагаю вам посмотреть на модуль socketserver, включенный в стандартную библиотеку python https://docs.python.org/3.4 /library/socketserver.html –