サーバ側で外部プログラムの実行
3年前に買った「みんなのPython Webアプリ編」を再読する。それから実習。CGIHTTPServerライブラリを使って、pythonプログラムをWebサーバで実行する練習から。
pythonプログラムの実行というより、python以外の外部プログラムをpythonコードから実行するような状況を想定してやってみる。
下記のtest.pyをcgi-binディレクトリに保存しておいて、ブラウザでhttp://localhost:8000/cgi-bin/test.pyを開く。ここで実行しているのは、pythonプログラムなのだけど、その中ではsubprocessモジュールで外部プログラム(この場合にはunameコマンドだけど、ここを変えれば任意のプログラムが実行できるはず)を起動している。
#!/usr/bin/env python import subprocess p = subprocess.Popen(['uname -a'],shell=True, stdin=subprocess.PIPE,stdout=subprocess.PIPE, close_fds=True) out = p.stdout.readline() print "Content-type: text/html\n" print "<html><body>\n" print out print "</body></html>"
subprocessモジュールの引数の与え方の参考文献:http://d.hatena.ne.jp/kinneko/20080509/p8
ちゃんとunameの結果がブラウザに表示できた。つまり、サーバ側でプログラムを実行して、その結果を受け取ることができるようになったということだ。ものすごく基本的なことだが、自分でできるとうれしい。
みんなのPython Webアプリ編 [みんなのシリーズ] | |
柴田 淳 おすすめ平均 Python による特殊なツールをつかった Web アプリ開発法 実は結構良書! しなやかに学べるWeb開発のABC 数少ないPython図書の1つ 内容は入門〜入門まで。 Amazonで詳しく見る by G-Tools |