Mod_pythonアプリケーションをpdbでデバッグ
posted by jun-g at Mon, 28 May 2007 17:47 JST
今年の2月にリリースされたMod_python-3.3.1から、ディレクティブで設定できる項目が沢山増えてる事にこないだ気づいた。その中にPythonEnablePdbっていう設定を発見。え?mod_pythonでpdb使えるの?って事で試してみた。
test.pyとして以下のコードをpublic_html直下に置いた。
# coding: utf-8
from mod_python import apache
def handler(req):
req.content_type = "text/plain"
req.write("Hello, Mod_python!\n")
return apache.OK
でもって.htaccessに以下を設定を書いた。
AddHandler python-program .py
PythonHandler test
PythonEnablePdb On
ブラウザからリクエストを投げてみると、何事もなくブラウザ上に「Hello, Mod_python!」と表示された。ドキュメントには「httpdを-DONE_PROCESSオプションを付けて起動せよ」と書いてあるので、その通りapacheを再起動してみる。
# apachectl -k stop
# apachectl -DONE_PROCESS
すると、コマンドライン上はプロンプトが返ってこず、応答待ちの状態となった。psコマンドで見てみると、httpdプロセスはひとつだけ動いてる状態になっている。
# ps ax | grep http
78398 p4 S+ 0:01.73 /usr/local/sbin/httpd -DONE_PROCESS
この状態でブラウザからリクエストを投げてみると、応答待ちだったコマンドライン上でおもむろにpdbが起動し、コマンド入力待ちになった。適当にpdbのコマンドを実行してみる。
> /home/jun-g/public_html/test.py(6)handler()
-> req.content_type = "text/plain"
(Pdb) l
1 # coding: utf-8
2
3 from mod_python import apache
4
5 def handler(req):
6 -> req.content_type = "text/plain"
7 req.write("Hello, Mod_python!\n")
8 return apache.OK
9
[EOF]
(Pdb) p req.uri
'/~jun-g/test.py'
(Pdb) r
--Return--
> /home/jun-g/public_html/test.py(8)handler()->0
-> return apache.OK
(Pdb) s
最後まで実行すると普通にブラウザに応答が返ってきた。なるほど。本当にpdbでデバッグできるようになってるみたい。
しかし…これは…便利なのか…?普段ほとんどpdbを使っていないからかもしれないけど、便利かどうか判断がつかない。個人的には今までどおりprintデバッグで十分かな。あと-DONE_PROCESSで起動した場合のhttpdの止め方がわからん。apachectl -k stopでは止まらなかったので、結局kill -9で殺した。
他に以前のバージョンとの違いで気付いた点は
- PythonDebugを有効にした場合のトレースバックに色々情報が出るようになった。
- PythonPathに仮想ディレクトリを指定するとエラーになるようになった。
ぐらいかな。あと、mod_pyhton.util.Fieldもちょっと変わってて、以前書いたコードがそのままじゃ動かなかった。けどそれは以前のコードの書き方がまずかっただけかもしんないので、詳細はふせとこう。
ところでDjangoとかTrac経由じゃなくて、直接Mod_python触ってる人っているんかな…。
東海 Python Workshop 01 に参加してきた
posted by jun-g at Sun, 27 May 2007 18:45 JST
予定どおり、東海PythonWorkshop01に参加してきた。ので大雑把に内容と感想など。
どこでもPython
aodag隊長によるPythonの紹介。Pythonを使っている企業や団体、Pythonで出来る事や特徴、基本的な書き方などを高橋メソッドでザーっと紹介。GUIツールキットの紹介に、py-gtkが含まれていなかったのは何故なんだぜ?
Ploneで快適CMS 導入から使いこなし
nyusukeさんによる、Ploneの紹介。PloneというかZopeはどうも「高機能すぎて難しい」という先入観から来る苦手意識があって、職場に導入こそしているものの、ほとんど使いこなせていない。nyusukeさんの説明はすごく丁寧で、「あ、そんな事も簡単にできちゃうなら、もうちょっとちゃんと勉強して使ってみようかな」という気になった。プロダクトを活用すれば、社内向けにバラバラに動いているサービスも、Ploneに集約できちゃいそうな感じやし。
Djangoで始めるデザイナー的フレームワーク入門
pateoさんによる、デザイナー視点から見たDjangoの紹介。今回の発表用にTwitter風なmonologistaというサイトを作ったとのこと。しかもほとんどGenericViewsだけで出来た、との事。ほとんどコードを書かなくて済むDjangoはデザイナーにおすすめ、という事らしい。なるほど。
Djangoの話で良く出てくるGenericViews、いまだに何の事なのかさっぱりわからない。そろそろ一度Djangoを触ってみた方が良いのかも。
WSGIの日々 名もなきフレームワーク
再度aodag隊長の発表。WSGIの概要紹介と、aodag隊長が制作中のオレオレWEBアプリケーションフレームワークの構成と設計の紹介。知らない名前が大量に出てきたのでメモメモ。
lightyってlighttpdの事だったのか。知らんかった。
ここからはライトニングトーク。
CASによるDjango,Plone間でのシングルサインオン
佐古田さんによるライトニングトーク。CASってのはCentral Authendication Serviceという、Servletで動作する認証サーバの事。クライアントの実装も色々あるみたいなので、便利そうでいいなーと思った。でもこういう認証サーバって、ユーザー毎アプリ毎のロールの設定とかも出来るんかな…?
それってPythonプログラミングなの?
ymasudaさんによる、PythonからCのライブラリなんかを操作する方法についての話。紹介された方法は、
の4つ。PyInstantはPythonコード中にCのコードを埋め込み、実行するとおもむろにコンパイルが始まるらしい。ワラタ。
やってみよう視覚化
jbkingさんによる、Graphvizを使って、コードからドキュメントだけじゃなく、グラフをも自動生成してしまえ、という「書かない技術」ならぬ「描かない技術」の話。すげーっす。あと、VPythonを使って、3Dで視覚化するというネタもあるそうな。おもろい。
Webテストツール pamie
Hanaokaさんによる、IE自動操作ツールpamieの紹介。自動操作なのでテスト以外にも色々使えるよね、というお話し。面白そうなので休み明けに職場のPCに早速インストールしてみよう!
Pythonコミュニティとの付き合い方
kfuruhataさんによる、勉強会や合宿の紹介。Pythonistaはみんなまじめで合宿大好き。勉強会は男だらけ。そして合宿で皆でギューギューになりながら露天風呂につかって親密になりすぎる、と。ちょ、それって…w
以上でWorkshop終了。でもって場所を居酒屋に移して懇親会。全員の方とお話できなかったのが残念やったけど、楽しかった。相手してくれた皆様、ありがとうございました。ちなみに、メガネ+モヒカンの人が僕です。名古屋は大阪からだと新幹線で一時間程度で行けるので、今後も東海イベントには気軽に遊びに行きたいな~と思った。
皆様お疲れさまでした。
HIGHLAND at TRIANGLE
posted by jun-g at Sat, 19 May 2007 15:10 JST
久々にクラブ行ってきた。最近はダベりメインのパーティは敬遠してるので、行きたいと思えるパーティが少なくて困る。
つーことで、今回のお目当ては去年聞き逃したDJ ZINC。友達から「いいよ」と聞いてたので超楽しみにしてたけど、実際その期待を裏切らない素晴らしいプレイやった。最高。フロアも天上から結露した水がしたたり落ちてくるぐらい熱気につつまれて盛り上がりっぱなしやった。
に、しても。あいかわらずTRIANGLEは狭い。というか設計が悪い。フロアはギューパンで、しかたなくフロアとバースペースの間あたりで踊ってる事が多いんやけど、フロアから出てくる人とフロアに突っ込んでいく人の双方向のベクトルにもみくちゃにされていつも途中で冷めちゃう。マナー悪い連中にガンガンぶつかられてムカッとすることも多い。でも最近の楽しそうな(Drum&Bassの)パーティってほとんどTRIANGLEでやるねんな…。
とまぁちょっとグチりつつも、楽しそうなパーティがあればまた行っちゃうけどね。
東海 Python Workshop 01
posted by jun-g at Tue, 15 May 2007 02:35 JST
この間の関西PythonWorkshopが楽しかったので、今度開催される東海PythonWorkshop01にも参加する事にした。
HDAドライバが6-STABLEにMFCされた模様
posted by jun-g at Tue, 15 May 2007 02:32 JST
HDA(High Definition Auido)ドライバが、ようやく6-STABLEにMFCされたとの情報を入手したのでCVSを見てみると、本当にコミットされてた。やたー!!
これまでは誰かが6-STABLE向けにビルドしてくれたhdaのカーネルモジュールをネットで拾ってきて、make worldする度にコピーして使っていたので、これでmake worldの作業時少し楽できるようになるな。
後はkiconvのパッチが取り込まれると非常に楽になるんやけど…。