5

ローカルの Windows マシンで apache + mod_wsgi を使用する django アプリを自動リロードしようとしています。

次の記事で参照されているこのコードをどこに追加すればよいか知りたいです。

http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

def _restart(path):
    _queue.put(True)
    prefix = 'monitor (pid=%d):' % os.getpid()
    print >> sys.stderr, '%s Change detected to \'%s\'.' % (prefix, path)
    print >> sys.stderr, '%s Triggering Apache restart.' % prefix
    import ctypes
    ctypes.windll.libhttpd.ap_signal_parent(1)
4

6 に答える 6

5

読んだ:

http://blog.dscpl.com.au/2008/12/using-modwsgi-when-developing-django.html

Django を使用する場合、ファイルを配置する場所を正確に示します。Windows に関連するソース コードのリロード ドキュメント セクションで誰もが指摘しているコードを変更するだけです。また読む:

http://blog.dscpl.com.au/2009/02/source-code-reloading-with-modwsgi-on.html

これは、Windows に関連する最初のバリエーションを説明しています。

于 2009-07-07T22:58:11.610 に答える
1

同じ記事の上記のコードブロックに記載されている再起動機能を置き換えます。

于 2009-07-07T17:52:09.403 に答える
1

サーバーでこのコードを使用します

touch site.wsgi

そしてそれは働きます。ブラウザでページをリロードすると、変更のあるページが表示されます。醜いかもしれませんが、シンプルでApacheを再起動する必要はありません。

于 2011-07-14T13:32:17.840 に答える
0

Bitnami DjangoStack http://bitnami.org/stack/djangostackWindows XPD:\BitNami DjangoStackにインストールし、C:\Documents and Settings\tsurahman\BitNami DjangoStack projects\myprojectをプロジェクト ディレクトリとしてテストします (既定のインストール) 。

http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode#Restarting_Apache_Processesのように、追加しました

MaxRequestsPerChild 1

ファイルD:\BitNami DjangoStack\apps\django\conf\ django.conf で Graham Dumpleton のコメントを参照

次に、プロジェクト ディレクトリにファイルmonitor.pyを http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode#Monitoring_For_Code_Changes のような内容で作成し、 _restartメソッドをhttp://code.google.comに置き換えます。 /p/modwsgi/wiki/ReloadingSourceCode#Restarting_Windows_Apache、これはスクリプトの一部です

....

_running = False
_queue = Queue.Queue()
_lock = threading.Lock()

def _restart(path):
    _queue.put(True)
    prefix = 'monitor (pid=%d):' % os.getpid()
    print >> sys.stderr, '%s Change detected to \'%s\'.' % (prefix, path)
    print >> sys.stderr, '%s Triggering Apache restart.' % prefix
    import ctypes
    ctypes.windll.libhttpd.ap_signal_parent(1)

def _modified(path):
    try:

....

ファイルD:\BitNami DjangoStack\apps\django\scripts\django.wsgiで、

....

import django.core.handlers.wsgi

import monitor
monitor.start(interval=1.0)
monitor.track(os.path.join(os.path.dirname(__file__), 'site.cf'))

application = django.core.handlers.wsgi.WSGIHandler()

次に、Apacheサーバーを再起動します

于 2011-08-04T12:17:09.480 に答える
0

このページにある次のコード ブロックの再起動関数を置き換えます。

Monitoring For Code Changes

The use of signals to restart a daemon process could also be employed in a mechanism which automatically detects changes to any Python modules or dependent files. This could be achieved by creating a thread at startup which periodically looks to see if file timestamps have changed and trigger a restart if they have.

Example code for such an automatic restart mechanism which is compatible with how mod_wsgi works is shown below.

import os
import sys
import time
import signal
import threading
import atexit
import Queue

_interval = 1.0
_times = {}
_files = []

_running = False
_queue = Queue.Queue()
_lock = threading.Lock()

def _restart(path):
    _queue.put(True)
    prefix = 'monitor (pid=%d):' % os.getpid()
    print >> sys.stderr, '%s Change detected to \'%s\'.' % (prefix, path)
    print >> sys.stderr, '%s Triggering process restart.' % prefix
    os.kill(os.getpid(), signal.SIGINT)
于 2009-07-07T18:08:00.090 に答える