2014-05-23 6 views
2

파이썬 변경 사항으로 pserve --reload가 작동하지만 템플릿을 변경할 때 수동으로 다시로드해야합니다.템플릿이 변경 될 때 어떻게 pserve를 다시로드 할 수 있습니까?

필자는 내 템플릿 폴더에서 변경 사항을 모니터링하는이 작은 스크립트를 만들었지 만 pserve를 다시로드하는 명령은 무엇입니까? .py 또는 무엇인가와 같은 Pyramids 프로젝트에서 pserve 메소드를 호출해야한다면 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

jinja2 피라미드 환경을 피라미드 구성자 객체 (your_project.__init__.py 및 샘플 * .ini PasteDeploy 파일)에 설치하는 방법을 보여주는 코드를 추가하십시오. –

답변

5

피라미드는 이미 PasteDeploy development.ini 파일에 이러한 구성을 넣어 또는 환경 변수를 사용하여 pserve를 다시 시작하지 않고 템플릿을 다시로드하는 방법을 제공한다. Environment Variables and .ini File Settings을 참조하십시오. 물론 응용 프로그램의 속도가 느려지므로 프로덕션에서 템플리트를 다시로드하지 마십시오.

+0

이상한. pyramid.reload_templates를 true로 설정했지만 내 jinja2 템플릿을 변경하면 pserve가 다시로드되지 않습니다. 이것에 따라야 할 것 같습니다 : http://docs.pylonsproject.org/projects/pyramid-jinja2/en/latest/ – the4tress

+0

pserve는 템플릿이 변경 될 때 전체 프로세스를 다시로드하지 않습니다. 파이썬 파일이 변경 될 때만 이것을 수행하면됩니다. 그러나 pyramid.reload_templates가 true이면 파일에 대한 변경 사항이 즉시 반영됩니다. –

+0

이렇게하면 내 작업 환경에서 실제로 트릭을 수행하지는 않지만 가정의 컴퓨터에 피라미드와 jinja2를 설치하면 효과적입니다. 나는 직장에서 더 많은 문제를 조사 할 것이다. 도와 주셔서 감사합니다. – the4tress

1

그건 그렇고 - 좋은 해결 스크립트. Steve는 맞습니다. 피라미드는 바로 사용할 수 있습니다. 그러나 피라미드 내장 워치 독 동작은 구성에 따라 다릅니다. Including pyramid_jinja2을 피라미드 프로젝트로 가져 오면 피라미드에 많은 요소가 생기고 템플릿 파일 확장자 (* .jinja2)에 대한 가정이 생깁니다.

pyramid_jinja는 템플릿 재로드를위한 구성을 제공합니다. enabled/disabled도 가능합니다. 피라미드 1.5 (당신이 그것을 사용합니까?) 이후로`pyramid.reload_templates '를 사용할 수도 있습니다.

하지만 가장 좋은 방법은 try the pyramid scaffold that uses jinja2 templates입니다. 설치하는 데 5 분이 걸린 다음 jinja2 템플릿을 변경하고 피라미드가 다시로드되는지 확인합니다. 피라미드가 다시로드되는 경우 예상대로 현재 응용 프로그램에서 문제를 계속 디버그 할 수 있습니다.

+0

우수한 입력. 고맙습니다. 그것은 내게 더 깊숙이 파고 드는 것을줍니다. pyramid_jinja2를 설치했지만 setup.py를 실행하지 않았습니다. 방금 jinja2 템플릿을 사용할 수 있도록 development.ini 및 MINIFEST.in 파일을 업데이트했습니다. 나는 월요일에 setup.py를 실행하고 차이를 비교할 것이다. 월요일에 나는 이들 중 하나를 "대답"이라고 표시 할 것입니다. – the4tress

1

또한 config.ini 파일의 설정을 사용하도록 설정 객체를 설정했는지 확인하십시오. config = configurator (settings = settings)와 같은 것