Итак, я разрабатываю довольно большой проект python с несколькими модулями. "Основной" (runnable) модуль - это демон (демон 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, кажется, получает больше одного уведомления, но для меня это очень маленькая проблема, поэтому я не собираюсь ее исправлять.