我保留--reload可以处理任何python更改,但是当我更改模板时,我仍然需要手动重新加载。
我创建了一个监视模板文件夹的小脚本以进行任何更改,但是重新加载pserve的命令是什么?如果我需要从我的Pyramids项目中调用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()
答案 0 :(得分:5)
Pyramid已经提供了一种重新加载模板的方法,无需重新启动pserve
,只需将此配置放在PasteDeploy development.ini
文件中或使用环境变量即可。见Environment Variables and .ini File Settings。当然,不要在生产中启用模板重新加载,因为它会降低应用程序的速度。
答案 1 :(得分:1)
顺便说一下 - 很好的解决方法脚本。史蒂夫是对的,金字塔提供了开箱即用的功能。但金字塔内置的看门狗行为也取决于您的配置。 Including pyramid_jinja2进入您的金字塔项目会触发金字塔中的大量内容,并对模板文件扩展名(* .jinja2)做出一些假设。
pyramid_jinja提供模板重新加载的配置 - 它也可以enabled /禁用。由于金字塔1.5(您使用它吗?),您也可以使用设置`pyramid.reload_templates'。
但你能做的最好的事情是try the pyramid scaffold that uses jinja2 templates。花5分钟进行设置,然后更改jinja2模板并查看金字塔是否正在重新加载。如果金字塔正在重新加载,我期望的是,您可以继续使用当前应用程序调试问题。
答案 2 :(得分:1)
确保将配置对象设置为从development.ini中获取设置。像config = Configurator(settings = settings)
之类的东西