Перезагрузить приложение Flask при изменении файла шаблона

По умолчанию при запуске приложения Flask с использованием встроенного сервера ( Flask.run ) оно отслеживает свои файлы Python и автоматически перезагружает приложение, если оно изменения кода:

* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader

К сожалению, похоже, что это работает только для файлов * .py , и я, похоже, не нахожу никакого способа распространить эту функциональность на другие файлы. В частности, было бы чрезвычайно полезно, чтобы Flask перезапускал приложение при изменении шаблона . Я потерял счет, сколько раз возился с разметкой в ​​шаблонах и сбивался с толку, не замечая никаких изменений, только чтобы узнать, что приложение все еще использует старую версию шаблона Jinja.

Итак, есть ли способ разместить файлы монитора Flask в каталоге templates , или для этого потребуется погрузиться в исходный код фреймворка?

Изменить : Я использую Ubuntu 10.10. На самом деле я не пробовал это ни на каких других платформах.


После дальнейшего расследования я обнаружил, что изменения в шаблонах действительно обновляются в реальном времени, без перезагрузки самого приложения. Однако, похоже, это применимо только к тем шаблонам, которые передаются в flask.render_template .

Но так случилось, что в моем приложении довольно много параметризованных многократно используемых компонентов, которые я использую в шаблонах Jinja.Они реализованы как {% macro%} s, находятся в выделенных «модулях» и {% import%} включены в реальные страницы. Все красиво и СУХОЙ ... за исключением того, что эти импортированные шаблоны, по-видимому, никогда не проверяются на предмет модификаций, поскольку они вообще не проходят через render_template .

(Любопытно, что этого не происходит для шаблонов, вызываемых через {% extends%} . Что касается {% include%} , я понятия не имею, поскольку я не действительно используйте их.)

Итак, корни этого явления, кажется, лежат где-то между Jinja и Flask или Werkzeug. Я полагаю, это может потребовать посещения системы отслеживания ошибок для любого из этих проектов :) Тем временем я принял jd. , потому что это решение, которое я действительно использовал - и оно работает как шарм.

76
задан Adam Lear 6 March 2012 в 05:51
поделиться