For faster navigation, this Iframe is preloading the Wikiwand page for Twisted.

Twisted

TwistedPython で記述されたイベント駆動型ネットワークプログラミングフレームワークで、MIT License でライセンスされている。

Twisted プロジェクトはTCPUDPSSL/TLSIPマルチキャストUNIXドメインソケットをサポートし、また、多数のプロトコル (HTTPNNTPIMAPSSHIRCFTP など) をサポートしている。

中心的な概念

[編集]

プロトコルとトランスポートの分離

[編集]

Twisted は論理的なプロトコル(通常 HTTP や POP3などのストリームベースのコネクションに依存している)と、そうしたストリームベースのセマンティクス[要曖昧さ回避]をサポートした物理的なトランスポート層(ファイル、ソケット、SSL ライブラリなど)との完全な分離を目指して設計されている。論理的なプロトコルとトランスポート層との接続は、情報が論理プロトコル層に渡される最後の瞬間まで行われない。論理的なプロトコルはトランスポートレイヤのインスタンスを通知され、メッセージを送り返したり、相手の識別情報を確認したりするために使用することができる。ただし、プロトコルのコード内で、 トランスポート層にトランスポート層内の問題について問い合わせを行うことが可能である。当然ながら、トランスポート層がそのような方法をサポートしていなければプロトコルのコードは失敗する。

Deferred (遅延評価オブジェクト)

[編集]

Twisted のアプリケーションモデルの中心は、Deferred (遅延) という概念である。これは一般的なデザインパターンの分野ではFutureとも呼ばれる。Deferred とは、たとえば遠隔地の相手からデータを必要とするなどの理由によりまだ結果が計算されていない値である。Deferred は通常のオブジェクトのように他に渡すことはできるが、値を問い合わせることはできない。各 Deferred はコールバックチェインをサポートしており、Deferred が値を取得すると、コールバックの結果を次の入力として、コールバックチェーンを通じた通知が行われていく。これにより Deferred の値を知ることなく扱うことができる。たとえば、Deferred がリモートの IPアドレス を 4 桁の形式で格納する文字列を返すとき、それを 32 ビットの数値に変換するようコールバックを追加することができる。Deferred のユーザーは、これを 32ビットの数値を返す Deferred として扱えるようになる。この機能、および "エラーバック" (errback; エラーハンドラーとして呼ばれるコールバック) を定義する機能により、イベントドリブンの抽象化を保ったままで、コード上は時系列に書くことを可能にしている。

スレッドのサポート

[編集]

Twisted はスレッドを Deferred の入力として用いることで、生のスレッドに対する抽象化をサポートしている。すなわち、Deferred は即時に制御を返し、スレッドが終了したときに値を受け取る。メインスレッドで動作するコールバックを定義することができ、これにより複雑なロック処理の必要性を軽減させている。 データベースの呼び出しそのものも外部スレッドとして行われるが、結果はメインスレッドで発生する。

外部イベントループ

[編集]

TwistedはGTKQtCocoaPyObjC を介して)などの、外部のイベントループと結合することができる。これによりGUIプログラムのネットワークサポート層としてTwistedを用い、Pythonネイティブのライブラリのようにソケットごとにスレッドを持ってしまうオーバーヘッドなしに、すべてのライブラリを使うことができる。このモデルを使うと、たとえば本格的なWebサーバをGUIプログラムと同一プロセス内で結合することができる。

Twisted を使用しているアプリケーション

[編集]

Twisted を用いたアプリケーションの実装で有名なものとしては、Jaiku がある。また ITA Software が開発したエア・カナダの航空券予約システムは、Twisted を広範囲にわたって使用している。[1].

関連項目

[編集]
  • Perl Object Environment - Perl プログラミング言語のための相当するフレームワーク
  • Twisted Lore - Twisted チームが開発したドキュメント生成プログラム

脚注

[編集]
  1. ^ http://www.eweek.com/c/a/Application-Development/Python-Slithers-into-Systems/1/

外部リンク

[編集]
{{bottomLinkPreText}} {{bottomLinkText}}
Twisted
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?