Как сделать поминутный учет работы скрипта?

Есть некий скрипт на python-е, который принимает на вход файл настроек и отлично делает свою работу.
В командной строке я его запускаю так
python script.py --config user1.json
Стоит задача сделать запуск возможным через веб-интерфейс и с учетом времени которое проработает скрипт.
Т.е. каждый пользователь может запускать/останавливать скрипт, и у себя в панельке видеть сколько всего минут проработал скрипт.

Я думаю делать с помощью NodeJS - для каждого пользователя запускать процесс который будет управлять процессом python-а
var workerProcess = child_process.spawn('python', ['script.py', '--config', file]);


Хотелось бы услышать другие варианты реализации.
  • Вопрос задан
  • 592 просмотра
Пригласить эксперта
Ответы на вопрос 4
zoonman
@zoonman
⋆⋆⋆⋆⋆
time -p python script.py --config user1.json
Ответ написан
Комментировать
@FireGM
Костыль в виде записи времени старта скрипта в бд.
И окончание тоже. И вообще, побольше логов можно сделать.
Ответ написан
Комментировать
@asfhyg4873gfdj
Можно создать отдельный поток в котором циклом, каждую минуту, записывать в файл или куда нужно сколько работает программа.
Ответ написан
Комментировать
Haikson
@Haikson
Не понятно вот что: пользователь запускает процесс и ждет его завершения? Или каждые N секунд чекается состояние скрипта? Первый случай опасен тем, что скрипт может проработать дольше, чем таймаут отдающего сервера (nginx, apache). Но если это исключено, то стоит время запуска скрипта хранить в сессии/куках и после завершения вычислить разницу. Во втором случае можно создавать lock файл, чтобы оградить от повторного запуска скрипта. Допустим с именем user1.lock . В него можно записать время запуска. Или же в файл не записывать, а писать в переменную сессии и каждые N секунд проверять наличие lock файла. И опять в ход идет арифметика. Вариантов много, но все они сводятся в хранении времени запуска где то. Не советую писать в БД. Накладно. Лучше маленькие файлы создавать-удалять.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы