Python 模板更改时如何重新加载pserve?

Python 模板更改时如何重新加载pserve?,python,pyramid,pyinotify,Python,Pyramid,Pyinotify,我有pserve——重载处理任何python更改,但在更改模板时仍然必须手动重载 我制作了一个小脚本来监视我的templates文件夹是否有任何更改,但是重新加载pserve的命令是什么?如果我需要从我的金字塔项目中调用pserve方法,比如在init.py或其他什么东西中,我会调用什么方法来重新加载pserve #!/usr/bin/env python import sys import pyinotify from subprocess import call import time w

我有pserve——重载处理任何python更改,但在更改模板时仍然必须手动重载

我制作了一个小脚本来监视我的templates文件夹是否有任何更改,但是重新加载pserve的命令是什么?如果我需要从我的金字塔项目中调用pserve方法,比如在init.py或其他什么东西中,我会调用什么方法来重新加载pserve

#!/usr/bin/env python
import sys
import pyinotify
from subprocess import call
import time

wm = pyinotify.WatchManager()
mask = pyinotify.IN_DELETE | pyinotify.IN_CREATE | pyinotify.IN_MODIFY

class EventHandler(pyinotify.ProcessEvent):
    def process_IN_MODIFY(self, event):
        print "Modified: ", event.pathname

        # This is where my reload call would go...            
        # call(["pserve", "reload"])

handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch("/path/to/my/pyramid/templates/", mask, rec=True, auto_add=True)

notifier.loop()

金字塔已经提供了一种无需重新启动
pserve
即可重新加载模板的方法,方法是将此类配置放入PasteDeploy
development.ini
文件或使用环境变量。看见当然,不要在生产环境中启用模板重新加载,因为这会降低应用程序的速度。

顺便说一句-很好的解决方案脚本。史蒂夫是对的,金字塔提供了开箱即用的服务。但金字塔内置的看门狗行为也取决于您的配置。进入您的金字塔项目会触发金字塔中的许多内容,并对模板文件扩展名(*.jinja2)做出一些假设

pyramid_jinja提供了模板重新加载的配置-也可以进行/禁用。由于pyramid 1.5(您使用它吗?),您也可以使用设置“pyramid.reload_templates”


但是你能做的最好的事情就是去做。设置需要5分钟,然后更改jinja2模板,查看pyramid是否正在重新加载。如果pyramid正在重新加载,我预计,您可以继续调试当前应用程序的问题。

请确保您将配置对象设置为接受development.ini中的设置。类似于config=Configurator(settings=settings)

。我将pyramid.reload_templates设置为true,但当我更改jinja2模板时,pserve不会重新加载。看起来应该是这样的:当模板被更改时,pserve不会重新加载整个过程;只有在更改Python文件时才需要这样做。但是,如果pyramid.reload_templates为true,则您对文件所做的更改将立即反映出来。因此,在我的工作环境中,这实际上并没有起到作用,但我在家里的一台机器上安装了pyramid和jinja2,它起到了作用。我会在工作中进一步研究这个问题。感谢您的帮助。添加代码,显示如何将jinja2金字塔环境设置到金字塔配置器对象(您的_项目.u init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。非常感谢你。这给了我一些更深入的东西。我安装了pyramid_jinja2,但从未运行过setup.py。我刚刚更新了development.ini和MINIFEST.in文件,以便使用jinja2模板。我将在周一运行setup.py并比较差异。周一,我将其中一个标记为“已回答”。