読者です 読者をやめる 読者になる 読者になる

mod_wsgiに移行した

mod_wsgi

mod_wsgiでいいかなと思いつつ、現実世界のアプリケーションではlighttpd+FastCGIでもmod_wsgiでもそう違いはないかなと思いつつ、数ヶ月ほど過ごしてきたわけですが、すぱっとmod_wsgiに移行しました。

移行した最大の理由は「flupのFastCGIのプロセスを再起動するより、WSGIスクリプトをtouchするだけの方が断然楽」ということですが、「FastCGIを使い続けたい」という理由も薄くなったこともあります。「FastCGIを使い続けたい(続けたかった)」理由とは、

  1. 単純に移行コストがかかる。
  2. いままでは非標準的な場所(/usrや/usr/local以外)にPython2.5を入れていたので、mod_wsgiに切り替えるにしてもPythonとmod_wsgiのバージョンを管理するのが大変。
  3. PythonではなくPerlで一部のフロントエンドを書きたいという欲求が今でもあるので、その場合にmod_wsgimod_perlが同居してどんなことになるのか想像出来なかった。(そういったケースではPythonPerlも、FastCGIlighttpdでやるのがベストであろうという予想があった。)

二番目の理由に関しては、自分でPython2.5とmod_wsgiのRPMを作って解決。最後の理由は、今でも結構悩ましいけど、「本当に問題になった時考えればよくね?」という楽観的理由と、Pythonさえあれば、自分の力だけでどんな問題でも解決できる!」という信念で、まあ解決。

予備調査は十分していたので、移行自体は簡単だった。速度のメリットは、前にも書いたけど、現実世界のWebアプリケーションではほとんどないかな。地味にうれしいのは、Apacheのログ出力で、"%D"を使うとマイクロ秒でリクエスト処理時刻を記録できる、とか?地味に痛いのは、自分自身が丸二年ほどApacheに触っていないので、configurationの書き方がさっぱり分からないこと。


前述の通り、mod_wsgi環境下ではWSGIスクリプトのタイムスタンプを更新するだけでアプリケーションを更新できるわけですが、そうとはいえ、単にtouchするだけではその瞬間のリクエストが強制終了で?エラーになるので、上品に運用するにはそれなりの理解とノウハウが必要と感じます。


あまりmod_wsgiの話題とは関係ないけど、以前紹介したCentOS向けのPython2.5のrpm/src.rpmはNot Foundになりますね。python-users.jpの運営者はこういったものをサイトで配布すればよいのではないか。皆もpython-users.jpの運営者の放置っぷりに抗議すればいいと思います!!