Twinado = Tornado + async-python-twitter [tornado]
http://kzk9.net/blog/2009/09/twinado_is_tornado_plus_async-python-twitter.html
早速 tornado で非同期通信する twitter クライアントアプリができてる !
早速 tornado で非同期通信する twitter クライアントアプリができてる !
tornado について雑感 [tornado]
昨日の続き
【フレームワークについて】
URL dispatch と request/response を抽象化する機能はあるし、テンプレート機能もあるが O/R マッパはない。
RoR や Django と比較すると、Web フレームワークというより CGI モジュールの無限ループ版といった感じ。HTTP リクエストを受けてレスポンスを返す最低限のラッパーといった感じのもの。
その分、フレームワークの規約に沿わないことをしようとして苦労するとか、フレームワークの仕様にはまるとかあまりなさそう。
多言語化の機能↓を使わなければ、shift_jis での入出力もできそうな(そのうち試す)。
http://www.shibu.jp/tornado/walkthrough.html#index-80
携帯向けに、Django で、ミドルウェア書いたりするのより簡単そうな予感がする。
今時、セッション変数に相当する機能も自前でもっていない。セッション変数に相当する機能が必要なら、クッキーの値をキーにした辞書をメモリ内に持つとかで実装することが必要。
Python のソースで 5700行程度しかないので、ソースを全部読むこともできる。非常にシンプルため理解しやすくフレームワーク固有で覚えることも少ないので、最初>の Web プログラミングの勉強のためのプラットフォームにも良いのではないか。
Google App Engine を含む WSGI コンテナで動かすこともできる。
WSGI コンテナで動かすと、 tornado の非同期通信の機能が使えない。
テンプレートはシンプルでわかりやすい。Django のテンプレートを簡単にした感じ?
ただ、インターフェースモジュールの使いどころが、まだよくわかってない自分。
http://www.shibu.jp/tornado/walkthrough.html#index-81
テンプレートにロジックを書く機能がないのでそれを補足するものと理解。
ちょっと手元でサンプルを動かしただけでも、動作が速い感じがする。
tornado の HTTPServer の起動が速いので、それだけでも開発効率が良い感じ。
【インストールについて】
setup.py install しろと書いてあるけど、 tornado ディレクトリをパッケージとして認識できるところにコピーするだけで動く。Linux + python 2.5 の場合に epoll.c がコンパイルされるが、その組み合わせ以外に
C のモジュールはコンパイルされないし、epoll.c がなきゃないで、 select が使われるだけ。
【database モジュールについて】
tornado/database.py の 200行以下のコードで薄くラップしてる MySQL 専用
1.autocommit
2.cursor の open/close を隠蔽する
3.結果のフィールドが行ごとにプロパティとして取得できるように変換
(↑テンプレートに渡すのに都合が良いように)
などを実現してるけど、tornado で RDBMS を使う上で特に必須ではない。
他の RDBMS を使えるようにする配慮はいっさいない
そもそも、O/R マッパーではなく、アプリの中で SQL を記述しちゃうので、テスト環境
で sqlite 本番で MySQL とかいうことは無理。
別の RDBMS を使う場合には、同じようなラッパーを書いた方が良いと思うが、database.py と API をあわせる必要ないかと。connection をスレッド間で共有できる DBAPI なら、(多少手間はかかるけど)ラッパー書く必要もない。
demos/blog では、アプリケーショングローバルに DB 接続変数を置いている。
「いっぱい接続したい場合は、HTTPServer を立ち上げて手前に nginx 置け」ということかと。
(追記 9/24)
http://www.hyuki.com/yukiwiki/wiki.cgi?HowFriendFeedUsesMySqlToStoreSchemaLessData
【フレームワークについて】
URL dispatch と request/response を抽象化する機能はあるし、テンプレート機能もあるが O/R マッパはない。
RoR や Django と比較すると、Web フレームワークというより CGI モジュールの無限ループ版といった感じ。HTTP リクエストを受けてレスポンスを返す最低限のラッパーといった感じのもの。
その分、フレームワークの規約に沿わないことをしようとして苦労するとか、フレームワークの仕様にはまるとかあまりなさそう。
多言語化の機能↓を使わなければ、shift_jis での入出力もできそうな(そのうち試す)。
http://www.shibu.jp/tornado/walkthrough.html#index-80
携帯向けに、Django で、ミドルウェア書いたりするのより簡単そうな予感がする。
今時、セッション変数に相当する機能も自前でもっていない。セッション変数に相当する機能が必要なら、クッキーの値をキーにした辞書をメモリ内に持つとかで実装することが必要。
Python のソースで 5700行程度しかないので、ソースを全部読むこともできる。非常にシンプルため理解しやすくフレームワーク固有で覚えることも少ないので、最初>の Web プログラミングの勉強のためのプラットフォームにも良いのではないか。
Google App Engine を含む WSGI コンテナで動かすこともできる。
WSGI コンテナで動かすと、 tornado の非同期通信の機能が使えない。
テンプレートはシンプルでわかりやすい。Django のテンプレートを簡単にした感じ?
ただ、インターフェースモジュールの使いどころが、まだよくわかってない自分。
http://www.shibu.jp/tornado/walkthrough.html#index-81
テンプレートにロジックを書く機能がないのでそれを補足するものと理解。
ちょっと手元でサンプルを動かしただけでも、動作が速い感じがする。
tornado の HTTPServer の起動が速いので、それだけでも開発効率が良い感じ。
【インストールについて】
setup.py install しろと書いてあるけど、 tornado ディレクトリをパッケージとして認識できるところにコピーするだけで動く。Linux + python 2.5 の場合に epoll.c がコンパイルされるが、その組み合わせ以外に
C のモジュールはコンパイルされないし、epoll.c がなきゃないで、 select が使われるだけ。
【database モジュールについて】
tornado/database.py の 200行以下のコードで薄くラップしてる MySQL 専用
1.autocommit
2.cursor の open/close を隠蔽する
3.結果のフィールドが行ごとにプロパティとして取得できるように変換
(↑テンプレートに渡すのに都合が良いように)
などを実現してるけど、tornado で RDBMS を使う上で特に必須ではない。
他の RDBMS を使えるようにする配慮はいっさいない
そもそも、O/R マッパーではなく、アプリの中で SQL を記述しちゃうので、テスト環境
で sqlite 本番で MySQL とかいうことは無理。
別の RDBMS を使う場合には、同じようなラッパーを書いた方が良いと思うが、database.py と API をあわせる必要ないかと。connection をスレッド間で共有できる DBAPI なら、(多少手間はかかるけど)ラッパー書く必要もない。
demos/blog では、アプリケーショングローバルに DB 接続変数を置いている。
「いっぱい接続したい場合は、HTTPServer を立ち上げて手前に nginx 置け」ということかと。
(追記 9/24)
http://www.hyuki.com/yukiwiki/wiki.cgi?HowFriendFeedUsesMySqlToStoreSchemaLessData
tornado 0.2 同梱のサンプルを読む [tornado]
http://nakagami.blog.so-net.ne.jp/2009-09-17 の続き
tornado のアーカイブの demos ディレクトリにサンプルがいろいろあった。
読んでみた。
helloworld
伝統の Hello World
http://www.shibu.jp/tornado/start.html のサンプルとほぼ同じ(微妙に違う)
auth
Google の OpenID でログインするサンプル
Google から受け取った認証情報を json フォーマットでクッキーに保存
blog
Blog サンプル、と言ってもコメントやトラックバック機能なし
典型的な Web アプリのサンプル
データは、MySQL へ
認証は Google OpenID。初回ログイン時にユーザーレコードを MySQL に作成
テンプレートを使っていてテンプレート継承も使っている
ユーザーインターフェースモジュール↓も使っている
http://www.shibu.jp/tornado/walkthrough.html#index-81
データーベースコネクションは Application global な変数で保持している
appengine
demos/blog/ の AppEngine 版
chat
非同期通信のサンプルとしてのチャットアプリ
認証は google OpenID
テンプレートの例がシンプルなので、demos/blog/templates より前に見るべし
facebook
Facebook アプリのサンプル
wsgi
Tornado の HTTP Server が WSGI 関数を処理するコンテナサンプル
WSGIContainer クラスは、まだ production 環境でテストされてないとのこと
testwsgi.py 関数を WSGI アプリとみなすコンテナ
testweb.py demos/wsgi/web にある web.py の WSGI アプリのコンテナ
django
Django を wsgi で tornado をコンテナにしてサービスするサンプル
必要なら、 wsgi/testwsgi.py と見比べてみるべし
tornado のアーカイブの demos ディレクトリにサンプルがいろいろあった。
読んでみた。
helloworld
伝統の Hello World
http://www.shibu.jp/tornado/start.html のサンプルとほぼ同じ(微妙に違う)
auth
Google の OpenID でログインするサンプル
Google から受け取った認証情報を json フォーマットでクッキーに保存
blog
Blog サンプル、と言ってもコメントやトラックバック機能なし
典型的な Web アプリのサンプル
データは、MySQL へ
認証は Google OpenID。初回ログイン時にユーザーレコードを MySQL に作成
テンプレートを使っていてテンプレート継承も使っている
ユーザーインターフェースモジュール↓も使っている
http://www.shibu.jp/tornado/walkthrough.html#index-81
データーベースコネクションは Application global な変数で保持している
appengine
demos/blog/ の AppEngine 版
chat
非同期通信のサンプルとしてのチャットアプリ
認証は google OpenID
テンプレートの例がシンプルなので、demos/blog/templates より前に見るべし
Facebook アプリのサンプル
wsgi
Tornado の HTTP Server が WSGI 関数を処理するコンテナサンプル
WSGIContainer クラスは、まだ production 環境でテストされてないとのこと
testwsgi.py 関数を WSGI アプリとみなすコンテナ
testweb.py demos/wsgi/web にある web.py の WSGI アプリのコンテナ
django
Django を wsgi で tornado をコンテナにしてサービスするサンプル
必要なら、 wsgi/testwsgi.py と見比べてみるべし
Tornado [tornado]
こ、これは・・・
http://itpro.nikkeibp.co.jp/article/NEWS/20090911/336989/?SS=imgview&FD=-39701937
いつも、人より数歩あとを行く自分。バージョンが 0.1 というところが気になるが、既に機は熟してるのか?
http://itpro.nikkeibp.co.jp/article/NEWS/20090911/336989/
http://www.tsuyukimakoto.com/blog/2009/09/12/tornade_from_friendfeed/
http://www.shibu.jp/tornado/index.html
http://www.tornadoweb.org/
http://itpro.nikkeibp.co.jp/article/NEWS/20090911/336989/?SS=imgview&FD=-39701937
いつも、人より数歩あとを行く自分。バージョンが 0.1 というところが気になるが、既に機は熟してるのか?
http://itpro.nikkeibp.co.jp/article/NEWS/20090911/336989/
http://www.tsuyukimakoto.com/blog/2009/09/12/tornade_from_friendfeed/
http://www.shibu.jp/tornado/index.html
http://www.tornadoweb.org/