イベント駆動型フレームワーク「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に簡単にできる


Leave a comment


:

:

:

:

このエントリーのはてなブックマーク (-)