junoを使ってみた(1)
近頃、社内勉強会でRubyをつかっていることもあり、すっかりRubyづいている今日この頃です。
Sinatraをインストールして軽くいじって遊んでいたりしてます。
で、Pythonでも似た感じのがないかな〜と思ってちょっと検索してみたらmoongiftさんの以下の記事を発見しました。
SinatraライクなPython用軽量Webフレームワーク「Juno」
なるほど、これは確かにSinatraっぽい。
a lightweight and simple python web frameworkって言うのも気に入ったので早速インストールし、GAEで動かしてみました。
インストール
0を1にする瞬間が難しい: lightweight web framework Juno,juno/doc/1-setup.mdを参考にインストール
SQLAlchemy,Jinja2,Makoをインストール*1。Debugが使えるとのことなのでWerkzeugもインストールしときました。
実際に動かしてみる
まずはご挨拶から。hello_world.pyを参考に、でもSinatraを意識して冒頭ページの例っぽく書いてみた。
from juno import * @route('/hi') def index(web): return 'Hello, World' run()
これを適当なファイル(例 hello.py)に書いて、
python hello.py
を実行するとwebサーバーが立ち上がって、localhost:8080/hiにアクセスすると以下のように"Hello,World"って出てくれる。
GAEで使ってみる
実は7/15現在、junoのソース変更なしでは動きません。
あまり動かし方が書いてあるところがなかったのですが、http://gist.github.com/140565にありました。
なるほど、
sys.stdout = sys.stderr
ってなってるところを削るのか。たぶんこれは作者さんが故意に使えないようにしてるのかも。
ただ、確かにこれを削ると動く。*2
さっきのソースを以下のように変更すると無事GAEでも動きます。
from juno import * #junoの設定 init({ 'use_db': False, #DBは使わないように設定 'use_templates': False, #テンプレートは使わないように設定 実際は使えます 'log': False #ログ出力を止める }) @route('/hi') def index(web): return 'Hello, World' run(mode='appengine')