この謎の症状は mod_wsgi あたりの仕業らしい

pythonスクリプトを編集しても、編集結果が反映されない謎の挙動を示すことが多い。最初 .pyc ファイルのせいかと思ったんだけど消してもかわらない。Apache を再起動すると意図した通りになる。
ググったら同じ症状の人がいた。どうやら WSGI 関連が悪いらしい。


OK, 問題は mod_wsgi が組み込みモードで動いているからだ。
意味不明な機械翻訳のページだけど問題は把握できた(jp の部分を en にしたり www にしたりしても元のページは見つからなかった……)。
httpd.conf あたりに WSGIDaemonProcess と WSGIProcessGroup をしていすれば良さそう(参考ページ)


このあとひとしきりハマった。CentOS のパッケージで入る Apache は /etc/httpd/conf.d/python.conf で LoadModule python_module modules/mod_python.so とか書いてあるかも(いや、ほかのパッケージがインストールされた時に追加されたのかもしれない)。これをコメントアウトして、その代わりに

WSGIDaemonProcess hostname.example.com processes=1 threads=10 display-name=%{GROUP}
WSGIProcessGroup hostname.example.com
WSGISocketPrefix /var/run/wsgi

こういう感じに記述して Apache を再起動したら動いた。
ps すると (wsgi:hostname.example.com) みたいなプロセスが動いている事も確認できる。


……ってデーモンモードでもスクリプト自体がキャッシュされてるみたいな振る舞い変わらず!!えっ〜!!

後日追記: これは変更が監視されてる対象がエントリーポイントのスクリプトファイルだけで、そこから読み込まれるスクリプトが変わってもリロードされないからだった。
とりあえずエントリーポイントのスクリプトを touch すると次のリクエストの時はリロードされる。