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

superfcgiがよさげ

WSGI Django

The only one true way to run WSGI apps through fastcgi

http://pypi.python.org/pypi/superfcgi/

superfcgiは「WSGIアプリケーションをFastCGIで動かすための唯一正しい方法」という意欲的なライブラリ。

superfcgiはfastcgi.comが提供しているfastcgiappというCライブラリを使っているので、あらかじめインストールが必要。

Fedoraの場合は、

$ sudo yum install fcgi-devel

fastcgiappをインストールしたならば、

$ pip install superfcgi

superfcgiはDjango用のコマンドも用意しているので、settings.pyのINSTALLED_APPSに、

INSTALLED_APPS = (
    'superfcgi', # 追加
    'django.contrib.auth',
    'django.contrib.sessions',
    # ..省略
)

superfcfgiを追加すれば、runsuperfcgiというコマンドが利用できるようになる。

$ python manage.py help runsuperfcgi                             
Usage:
  Run this project as a fastcgi.

   superfcgi [options] [fcgi settings]

Optional Fcgi settings: (setting=value)
  workers=INT          number of worker proceses.
  threads=INT          number of threads on each worker.
  host=HOSTNAME        hostname to listen on..
  port=PORTNUM         port to listen on.
  socket=FILE          UNIX socket to listen on.
  daemonize=BOOL       whether to detach from terminal.
  pidfile=FILE         write the spawned process-id to this file.
  workdir=DIRECTORY    change to this directory when daemonizing.
  outlog=FILE          write stdout to this file.
  errlog=FILE          write stderr to this file.
  umask=UMASK          umask to use when daemonizing (default 022).

Examples:
  Run a fastcgi server on a UNIX domain socket (posix platforms only)
    $ manage.py runsuperfcgi socket=/tmp/fcgi.sock

  Run a fastCGI as a daemon and write the spawned PID in a file
    $ manage.py runsuperfcgi socket=/tmp/fcgi.sock daemonize=true \
            pidfile=/var/run/django-fcgi.pid

flupを利用している標準のrunfcgiコマンドとの違いは、superfcgiの場合、マルチプロセス・マルチスレッドを選択できることか。