2

pserve --reload は Python の変更に対応していますが、テンプレートを変更するときは手動でリロードする必要があります。

テンプレート フォルダの変更を監視するこの小さなスクリプトを作成しましたが、pserve をリロードするコマンドは何ですか? Pyramids プロジェクト内からinit .py などで 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()
4

3 に答える 3

6

pservePyramid は、そのような構成を PasteDeploydevelopment.iniファイルに入れるか、環境変数を使用することにより、再起動せずにテンプレートをリロードする方法を既に提供しています。環境変数と .ini ファイルの設定を参照してください。もちろん、アプリケーションの速度が低下するため、本番環境ではテンプレートのリロードを有効にしないでください。

于 2014-05-23T20:15:30.717 に答える
1

development.ini からも設定を取り込むように構成オブジェクトを設定してください。config = Configurator(settings = settings) のようなもの

于 2014-06-04T17:56:32.600 に答える
1

ところで、素晴らしい回避策のスクリプトです。Steve の言うとおりです。ピラミッドは、すぐに使用できる機能を提供します。ただし、ピラミッドの組み込みウォッチドッグの動作は、構成によっても異なります。ピラミッド プロジェクトにpyramid_jinja2 を含めると、ピラミッドで多くの処理がトリガーされ、テンプレート ファイルの拡張子 (*.jinja2) についてもいくつかの仮定が行われます。

pyramid_jinja は、テンプレートのリロード用の構成を提供します -有効/無効にすることもできます。ピラミッド 1.5 から (使用しますか?)、`pyramid.reload_templates' の設定も使用できます。

しかし、最善の方法は、jinja2 テンプレートを使用するピラミッドの足場を試すことです。セットアップに 5 分かかります。その後、jinja2 テンプレートを変更して、ピラミッドがリロードされているかどうかを確認します。ピラミッドがリロードしている場合は、現在のアプリケーションで引き続き問題をデバッグできます。

于 2014-05-24T11:30:35.900 に答える