WSGI
PylonsなどPasteベースなPythonWebアプリケーションをFastCGIで動かす方法
もうなんだか組み合わせがえらいことになってきている。 ToscaWidgetsのtwformsはテンプレートエンジンにGenshi使ってるし。まずはwsgiミドルウェアを設定する。 config/middleware.py ... from toscawidgets.middleware import make_middleware ... def mak…
mod_wsgiが1.0に向けて、フリーズに入る模様。 http://groups.google.co.jp/group/modwsgi/browse_thread/thread/cd10a9687aea282f/63c921504216c8ec#63c921504216c8ec
分かったのは root.py の RootController にexposeで修飾したメソッドを追加すると、そのメソッドをurlで指定できる。 クラス変数で他のコントローラを設定しておくと、その名前とメソッドをurlで指定できる。 文で分かりやすく書けないのだが、 class RootC…
以下の内容は、Subversionのtrunkから取得したコードで試しています。http://svn.turbogears.org/trunk/INSTALL.txt を見ると、PylonsとTurboGearsをそれぞれSuversionのtrunkからとってくるように書いてある。 $ svn co http://pylonshq.com/svn/Pylons/tru…
さて、ブックマークを保存する部分を考えよう。深く考えずに、ひとまずDBに入れることにする。 データアクセスにはSQLAlchemyを使う。オブジェクトをテーブルをまたいでマッピングできたり、継承構造をマッピングする方法を選択できたりと柔軟なO/Rマッパー…
http://pythonpaste.org/news.html#id1 WSGIベースのWebアプリケーションを作るのに便利なツール集Pasteの最新バージョン1.4が昨日リリースされたようです。 PasteDeploy, PasteScriptは変わっていない模様。
setuptoolsレディなプロジェクトを生成する。 paster create wsgibookmark色々質問されるが、そこは適宜答える(全部空でもOK) $ cd wsgibookmark $ ls setup.cfg wsgibookmark setup.py wsgibookmark.egg-info生成されるのはこんな感じ このうちwsgibookmark…
以前書いたものを修正してcheeseshopに登録した。http://cheeseshop.python.org/pypi/wsgihatenaauthCookieにBase64だけで入れていたのを、暗号化するように修正。
http://wsgi.org からいろいろ発見 Beaker セッションコンテナ Barrel 認証系 selector URLディスパッチャ selectorはprefixが使える分urlrelayよりも高機能なの?
webstringが結構よさげだったのだが、少し気になる点があった。 構造化したデータモデルをプッシュするのが少し複雑な気がする。 classが指定されているエレメント内のclassを使ってプッシュできない。 エレメントの出現順序に依存している部分がある。 もう…
webstringはマイクロフォーマットと相性がよさそうだな hatomに従っているhtmlはwebstringを経由してみると、全く違いが出てこない。
http://psilib.sourceforge.net/webstring.htmlcElementTreeとlxmlをエンジンにしているテンプレートエンジンのようなもの。 普通のテンプレートエンジンと趣が異なる。 通常はテンプレート内にタグやスクリプトレットを埋め込み、ロジック層やコントロール…
まあ、entory-ponintがあるので、PasteDeployで設定しとこう [filter:deliverance] use = egg:Deliverance#main theme_uri = file://%(here)s/deliverance/theme.html rule_uri = file://%(here)s/deliverance/rule.xml とりあえずstatic-appで試そうとした…
さて前回は値をFormWidgetに設定して表示させた。 後は受け取る側の処理だ。 素の状態のWSGIアプリケーションで取得できるのは、GETのクエリ文字列やPOSTのコンテンツボディだけ。 dictになって渡ってくるわけではない。 これは、入力内容が必ずしもurlencod…
サンプルが動きませんorz File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/ToscaWidgets-0.1a2dev_r2777-py2.5.egg/toscawidgets/middleware.py", line 47, in __call__ environ['paste.registry'].register(toscawid…
PasteDeployはWSGIアプリケーションの配備設定をiniファイル形式で書けるのだが、この裏ではどんな仕組みを使っているのか。 PasteDeployで設定ファイルに記述するときに、egg:Paste#wsgiutilsと書くと、Paste egg のentory_points.txt内からwsgiutilsを探し…
http://cheeseshop.python.org/pypi/urlrelay/0.6 ni先生から教えていただいたモジュール Colubridよりさらに、シンプルなWSGIディスパッチャ。 ところで、サンプルコードはデコレータに@がついてないのだが。 URLパターンとHTTPメソッドで実行するWSGIアプ…
http://www.openplans.org/projects/deliverance/ ルールベースで、テーマファイルとコンテンツファイルの内容を入れ替えたりできるフィルタ。 プロキシサーバーとして使うことも出来るし、WSGIミドルウェアとして使うことも出来る。 XPATHを使ったルールベ…
使うと思われるもの Paste Flup Twill py.test wsgiauth Colubrid Genshi FormEncode ToscaWidgets SQLAlchemy Pasteはwsgiアプリケーションを構築する時に便利なユーティリティ、ミドルウェア。config関係をどうしようかと思っていたが、これが一番親和性が…
wsgiauthはopenid認証にも対応してます。そのまま使おうとしても足りないものがいくつか。 - python-openid - python-urljr - python-yadis 以上のモジュールが必要。 pypiに登録されてるのでeasy_installですぐ入れられます。簡単な使い方 from wsgiauth.op…
WSGI認証ミドルウェアライブラリwsgiauthを使ってBasic認証 http://cheeseshop.python.org/pypi/wsgiauth ドキュメントが見つからない*1ので、ソースから使い方をチェック。 from wsgiauth import basic realm = "wsigh auth test" def authfunc(env, user, …
公式リリースがまちどおしいmod_wsgiをsvnから取って動かしてみてました。 導入はとても楽だった。 ./configure && make && make install でいいと思う。 僕はmakeしたあと手動でmod_wsgi.so をコピーしたけど。 (ちなみにlinuxだと.libsのしたにmod_wsgi.so…
ドキュメントには書かれていないが, requestオブジェクトのenvironアトリビュートからWSGI環境辞書にアクセスできる. WSGIミドルウェアはこの辞書に情報をのせてくることが多いので要チェック
http://d.hatena.ne.jp/perezvon/20070320/1174363964 http://d.hatena.ne.jp/Voluntas/20070320/1174372431google code にホスティングされているようで. さすが軍曹svn からとれるので試してみた 環境は, Macbook Mac OSX 10.4 付属のApacheのバージョンは…
タイトルの組み合わせでうまく動いてくれない. class MyApplication(WebpyApplication): urls = [ (r'^blog$', Blog), (r'^(index)?$', Site), ] 上記のディスパッチャを組んでみたが, 常にSiteを呼び出してしまう.調べてみると, Colubridはリクエストディス…
関西Workshop01で細江さんがライトニングトークしてくださるColubridを予習 http://wsgiarea.pocoo.org/colubrid/基本はリクエストディスパッチャー。 そして、WSGI対応。 ディスパッチに特化しているだけあって、多彩なディスパッチ方法をサポートしている…
WSGIの勉強としてはてな認証ミドルウェアを作っちゃいました。 """ WSGI middleware for Hatena Auth """ import md5 import base64 import re import urllib import urllib2 import simplejson certUrl = "http://auth.hatena.ne.jp/auth?api_key=%s&api_si…