Итак, я разрабатываю довольно большой проект на Python с несколькими модулями.«Основной» (работающий) модуль - это демон (фактически, Thrift-демон), который вызывает другие модули для его реальной функциональности.Запуск демона занимает много времени, потому что некоторые модули имеют довольно длительный и сложный процесс инициализации.
Поэтому, когда я запускаю демон, я жду ... скажем ... 2 минуты, чтобы всенагрузка, что не так уж плохо в общей схеме вещей.Однако для разработки это становится основной проблемой, потому что мне нужно перезапускать демона КАЖДЫЙ ВРЕМЯ, которое тратит много времени.
Большинство модулей загружается всего за несколько секунд.В идеале я хотел бы обнаружить, когда какие-либо файлы в конкретном модуле изменились, и перезагрузить этот конкретный модуль.Я уже разобрался , как перезагрузить модуль , но на данный момент я не могу понять, как наблюдать за конкретным модулем на предмет изменений.Помните, что в этом случае модуль - это не один файл .py
, а каталог с файлами __init__.py
и 5-10 .py
, поэтому мне нужно определить, когда любой изони изменились.
Вот макет проекта (если он вообще что-то меняет)
project
| -- daemonize.py
| -- main.py
| -- moduleA
| | -- __init__.py
| | -- happy_panda.py
| ` -- sad_panda.py
| -- moduleB
| | -- __init__.py
| | -- takes_forever_to_load.py
| ` -- seriously_get_some_coffee.py
| -- moduleC
| | -- __init__.py
| | -- frequently_changes.py
| | -- reasons_i_hate_my_job.txt
| ` -- home_address_of_moduleB_developer.txt
` -- service.py <-- uses modules A, B, and C
Любые идеи или предложения приветствуются.
РЕДАКТИРОВАТЬ
Спасибо за отличный отзыв.Вот код, который я создал на основе предложений.Есть небольшая ошибка, из-за которой pyinotify, кажется, получает более одного уведомления, но это очень маленькая проблема для меня, поэтому я не собираюсь ее исправлять.
https://gist.github.com/1013122