Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 7518 - Wine-tests: доработать блокировку от повторного запуска   Make a simular bug
Summary: Wine-tests: доработать блокировку от повторного запуска
Status: CLOSED FIXED
Alias: None
Product: WINE-tests
Classification: Свободные проекты (Open source projects)
Component: Общее (show other bugs)
Version: не указана
Hardware: PC All
: P4 minor
Target Milestone: ---
Deadline: 2011-09-01
Assignee: Виталий Перов
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 6264
  Show dependency treegraph
 
In work:
Reported: 2011-08-09 18:49 MSK by Виталий Перов
Modified: 2011-08-10 19:04 MSK (History)
3 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Виталий Перов 2011-08-09 18:49:37 MSK
Сейчас для блокировки скрипта от повторного запуска применяется файл lock.

При некорректном завершении скрипта (например при зависании компьютера), файл остаётся. И повторный запуск уже не возможен, пока вручную не будет удалён файл блокировки.

Возможных решений два:
1) Записывать в файл id процесса, и при повторном запуске проверять жив ли этот процесс.
2) Смотреть время создания файла. Если со времени создания прошло 2 или 3 часа, то файл удалять.
Comment 1 Александр Морозов 2011-08-09 19:05:56 MSK
Из выше перечисленных мне больше первый вариант нравится.
Ещё можно на файл lock ставить блокировку.
Comment 2 Виталий Перов 2011-08-09 19:58:15 MSK
Тут ещё проблема с реализацией на питоне.

Вариант со временем создания файла реализуется стандартными средствами питона при помощи функции os.stat(). Кроме того, эта функция является кроссплатформенной.

А вот для того, чтобы узнать жив ли блокирующий процесс, стандартных средств нет.
Можно запустить при помощи os.system() соответствующую комманду shell, а потом парсить её вывод.
Comment 3 Виталий Перов 2011-08-09 22:37:47 MSK
Начал реализацию.

Вместо запуска 'ps a', и поиска требуемого pid, думаю лучше смотреть напрямую в /proc.

Ещё нужно проверять имя программы. Может так получиться, что после загрузки компьютера процесс с таким pid будет существовать, но принадлежать совсем другой программе.
Comment 4 Виталий Перов 2011-08-10 18:08:22 MSK
Сделал блокировку через команду 'ps -p id -o comm=', которая сообщает имя процесса.
Comment 5 Виталий Перов 2011-08-10 19:04:01 MSK
Теперь появилась новая проблема:
При запуске разных скриптов имя процесса может быть разным.
Чтобы разные скрипты не работали с репозиторием одновременно, надо как-то учитывать их имена.

Исправил. Работает.
Для этого в конфиге теперь придётся добавлять имена новых скриптов.