お勉強(apacheとpython)の続き(その2)
cgi
さて、先にmod_pythonを見つけてしまったわたしは単純にcgi形式で動かすのに悩んでしまった。
.pyのファイルをApacheに実行させたいだけ。
結果としては.htaccessに以下の文を記述
AddHandler cgi-script .py
いろいろサイトを見て回っても私のような悩みを抱えている人がいない。.py形式でも問題なく動かしているようなので単純なことに違いない、と思い、上のように試してみた。
ふだんperlのcgiを生かすにはcgi-script .cgiとしているところを.pyにしただけ。AddHandlerとはそういう意味だろうと憶測してのこと。
それから通常のcgiを実行許可するときのようにhttpd.conf内で実行許可するディレクトリ内に
Options ExecCGI
を追加するのも忘れずにやっとこう。
#! /Python23/python
def displayError() :
import traceback
print "content-type: text/html\n"
print "<html><body><pre>"
traceback.print_exc()
print "</pre></body></html>"
def main() :
"""サンプルの実行
"""
#from mod_python import apache
#import cgi
import kinterbasdb
con=kinterbasdb.connect(
dsn="c:\\employee.fdb",
user="sysdba",
password="masterkey")
cur=con.cursor()
cur.execute("select * from employee order by first_name")
print "content-type: text/html\n" ;
print """<head><meta http-equiv="Content-type" content="text/html; charset=shift-jis"></head>
<html><body><pre>
"""
print "従業員テーブル\n"
print "__________________________________\n"
while 1:
row = cur.fetchonemap()
if row is None:
break
print row['first_name'], row['last_name']
print "</pre></body></html>"
con.close()
if __name__ == '__main__' :
import sys
import traceback
sys.stderr = sys.stdout
try :
main()
except :
displayError()
さてさて、よくわかってないのだがこうやって動かしたcgiは
http://www.lab.tkikuchi.net/modpython/intr-performance.html
で言うところの”標準のcgi”と理解していいのだろう(mod_pythonは必要なかった?)
パフォーマンスをだすにはmod_pythonを使う方がいいのかな。
