イベント駆動型フレームワーク「Twisted」
名前は聞いたことがあったけどよく分かっていなかったTwisted。おおたにさんの発表を聞いて、実際にスプリントで簡単なプログラムを書いてみたんだけど、少し面白さが分かった気がする。これは、例の秘密のプロジェクトで使えそう。今回のDevCampの一番の成果かも。
以下、おおたにさんの説明から。

以下、おおたにさんの説明から。

- イベント駆動型ネットワークフレームワーク
- BitTorrent, iCal WebDAVサーバ, Xen, Zope3
- 同期型 … 実装は簡単。スレッド大量生成。
- 非同期型 … 同期管理が大変。1つのスレッドで処理可能(← Twisted)
- Twisted版DNSの逆引き 一番遅いものが最大待ち時間
- Webチャット+ Ajaxの場合
同期型 → 定期的にポーリング、スレッドが必要
非同期型 → 送信専用接続と受信専用接続、普通のWebサーバじゃむり - Python標準ライブラリのasyncoreじゃダメなの?
→ 1つの処理なら充分、複数の接続/プロトコルを扱うと力不足 - TCP/UDP/Unix Socketなどをサポート
- ファイルアクセス/DBアクセスも非同期処理できる
- Linuxならコンソール(標準入出力)も非同期処理
- Twistedの基本
Reactor … イベントループ
Deferred … コールバック関数、エラーバック関数を複数登録
Factory … オブジェクト生成
Protocol … 接続中は生存、接続が終わると破棄 - Unix DaemonやWindows Serviceに簡単にできる









