Форум сайта python.su
Необходимо для заданных директорий отслеживать изменения, директорий порядка 20, может быть 5-7 вложенных, в каждой директории около 20-ти файлов, реакция на изменения должна быть не позднее 3-4мин. Пока приходит в голову 2 варианта: пробежаться по всем директориям, записать хеши файлов, для каждой директории записать количество объектов, запускать каждые 2мин и сравнивать; другой вариант - использовать pyinotify, т.к пока не нашел как генерить события изменения в вложенной директории, то на каждую директорию и поддиректорию нужен будет тред. Вопрос состоит в производительности, второй вариант конечно предпочтительнее, но в худшем варианте будет 140 тредов на pyinotify. Как лучше сделать, может есть другие варианты и я перемудрил.
Офлайн
Какая ось?
Офлайн
Для целей обновления? Под какую ось?
Офлайн
Прошу прощения, ось и не указал. Linux.
Офлайн
r1sТы не указал и цель. Предполагаю, что это тебе надо для синхронизации твоих исходников с клиентскими машинами.
Прошу прощения, ось и не указал. Linux.
Офлайн
Офлайн
Про pyinotify я и писал, невнимательно прочел документацию, для поддиректорий автоматом можно генерировать треды. Буду пробовать его.
baluЧто необходимо я написал, этого в принципе достаточно. Это только небольшой компонент программы. Применение похоже, но не про то.
Ты не указал и цель.
Офлайн
Да, что-то я пропустил про pyinotify в посте.
Офлайн
Обнаружилась одна не совсем приятная особенность, может даже бага. Eсли весим WatchManager() на файл на вторую и больше директорию от корня, например /home/blabla/file.txt, то не отслеживается событие IN_MODIFY, а сыплет странное.
start monitoring /home/blabla/tmp/file.txt with mask 0x00000fff
event_name: IN_OPEN is_dir: False mask: 32 name: path: /home/blabla/tmp/file.txt wd: 1
event_name: IN_CLOSE_NOWRITE is_dir: False mask: 16 name: path: /home/blabla/tmp/file.txt wd: 1
event_name: IN_MOVE_SELF is_dir: False mask: 2048 name: path: /home/blabla/tmp/file.txt-invalided-path wd: 1
event_name: IN_ATTRIB is_dir: False mask: 4 name: path: /home/blabla/tmp/file.txt-invalided-path wd: 1
event_name: IN_DELETE_SELF is_dir: False mask: 1024 name: path: /home/blabla/tmp/file.txt-invalided-path wd: 1
event_name: IN_IGNORED is_dir: False mask: 32768 name: path: /home/blabla/tmp/file.txt-invalided-path wd: 1
Отредактировано (Апрель 2, 2009 21:37:57)
Офлайн
Код запостите.
Офлайн