| 原作者 | グリフ・レフコヴィッツ |
|---|---|
| 開発者 | コミュニティ |
| 初回リリース | 2002年10月22日[1] |
| 安定リリース | 24.10.0 [2]
/ 2024年10月28日 |
| リポジトリ |
|
| 書かれた | パイソン |
| タイプ | イベント駆動型 ネットワーク |
| ライセンス | MITライセンス |
| Webサイト | 詳しくはこちら |
Twistedは、 Pythonで記述され、MIT ライセンスに基づいてライセンスされるイベント駆動型 ネットワーク プログラミング フレームワークです。
Twisted プロジェクトは、TCP、UDP、SSL/TLS、IP マルチキャスト、 Unix ドメインソケット、多くのプロトコル ( HTTP、XMPP、NNTP、IMAP、SSH、IRC、FTPなど) などをサポートしています。 Twisted はイベント駆動型プログラミングパラダイムに基づいています。つまり、Twisted のユーザーはフレームワークによって呼び出される短いコールバックを記述します。
核となるアイデア
プロトコルとトランスポートの分離
Twisted は、論理プロトコル (通常は HTTP やPOP3などのストリームベースの接続セマンティクスに依存) と、そのようなストリームベースのセマンティクスをサポートする物理トランスポート層 (ファイル、ソケット、SSL ライブラリなど) を完全に分離するように設計されています。論理プロトコルとトランスポート層間の接続は、情報が論理プロトコル インスタンスに渡される直前の、可能な限り最後の瞬間に行われます。論理プロトコルはトランスポート層インスタンスについて通知され、それを使用してメッセージを返送し、ピアの ID を確認できます。プロトコル コードでは、トランスポート層に対してトランスポートの問題に関する詳細なクエリを実行することは依然として可能であることに注意してください (クライアント側の SSL 証明書の確認など)。当然、トランスポート層がそのようなセマンティクスをサポートしていない場合、そのようなプロトコル コードは失敗します (例外が発生します)。
延期
Twisted アプリケーション モデルの中心となるのは、遅延オブジェクト(他の場所ではfutureと呼ばれます) の概念です。遅延オブジェクトは、リモート ピアからのデータに基づいているなどの理由でまだ計算されていない結果を受け取って処理するように設計されたクラスのインスタンスです。遅延オブジェクトは通常のオブジェクトと同様に渡すことができますが、その値を要求することができません。各遅延オブジェクトはコールバック チェーンをサポートします。遅延オブジェクトが値を取得すると、その値はコールバック チェーンの関数に渡され、各コールバックの結果が次のコールバックの入力になります。遅延オブジェクトを使用すると、関数呼び出しの値が使用可能になる前に、その結果を操作できます。
たとえば、遅延オブジェクトがリモート ピアから4 桁形式のIP アドレスを含む文字列を返す場合、コールバックをアタッチしてそれを 32 ビットの数値に変換できます。遅延オブジェクトのユーザーは、これを 32 ビットの数値を返す遅延オブジェクトとして扱うことができます。この機能と、関連する「エラーバック」(エラー ハンドラとして呼び出されるコールバック) の定義機能により、非同期イベントが発生したときにイベントを待つことなく、コードで事前に実行する処理を指定できます。非イベント駆動型システム (たとえば、スレッドを使用) では、ブロッキング呼び出しが行われるたびに、オペレーティング システムがスレッドを整理するための時期尚早で追加のオーバーヘッドが発生します。
スレッドサポート
Twisted は、スレッドを遅延ソースとして使用することで、生のスレッドの抽象化をサポートします。したがって、遅延はすぐに返され、スレッドが終了すると値を受け取ります。メイン スレッドで実行されるコールバックをアタッチできるため、複雑なロック ソリューションの必要性が軽減されます。Twisted のサポート ライブラリに由来するこのような使用法の代表的な例は、このモデルを使用してデータベースを呼び出すことです。データベースの呼び出し自体は外部スレッドで行われますが、結果の分析はメイン スレッドで行われます。
外部ループのサポート
Twisted は、 GTK+、Qt、Cocoa ( PyObjC経由)などの外部イベント ループと統合できます。これにより、Twisted をグラフィカル ユーザー インターフェイス(GUI) プログラムのネットワーク層として使用し、Python のネイティブ ライブラリを使用する場合のようにソケットごとのスレッドのオーバーヘッドを追加することなく、そのすべてのライブラリを使用できます。たとえば、このモデルを使用して、本格的な Web サーバーを GUI プログラムとインプロセスで統合できます。
Twisted を使用したアプリケーション
- BuildBot継続的インテグレーションシステムは、クライアント/サーバー通信にTwistedを利用しています。[ 3]
- ITAソフトウェアは、 Twistedを広範に活用したエアカナダの航空会社予約システムを開発しました。[4]
- SageMathは、 Mathematica、Maple、Magma、MATLABのオープンソースの代替品であり、 Twistedサーバー上で実行されるWebベースのインターフェースであるSageMathノートブック[5]を備えています。 [6]
- TwistedはOmegleの1対1チャットサービス[7]で使用されていましたが、パフォーマンス上の理由からgeventに置き換えられました[8] 。
- Apple Calendar ServerはTwistedを使用しており、[9] NASAのいくつかの内部プロジェクトでも同様に使用されています。
- Conch 、セキュア シェル(SSH) プロトコルの実装
- ソーシャル ネットワーキングおよびマイクロブログ サイトJaikuのオリジナル バージョンではTwisted が使用されていました。[引用が必要]
- オンライン クラウド データ ストアであるFluidinfo は、内部 RPC (一部はThriftおよびAMQPと組み合わせて)、内部サービス、および外部 API に Twisted を広範に使用しています。
- ファイルホスティングサービスUbuntu OneはTwistedを使用しました。
- Tor Hidden Services (HS)の HTTP プロキシであるTor2web は、Twisted を使用します。
- オープンソースの内部告発フレームワークであるGlobaLeaks はTwisted を使用しています。
- クラウドサーバー管理 Web アプリケーションであるCloudkick はTwisted を使用していました。現在はNode.jsを使用して書き直されています。
- クラウドテレフォニープロバイダーのTwilio はTwisted を使用しています。
- ビデオゲームの放送とチャットのコミュニティであるTwitchはTwistedを使用しています。 [10]
- 気象データの処理と統合APIであるVelocity WeatherはTwisted上に構築されています。[11]
- Web ベースの IRC クライアントであるqwebirc はTwisted を使用します。
- ネットワーク管理プラットフォームであるZenoss Core は、多くの内部デーモンとコレクションデーモンに Twisted を使用しています。
- Scrapy は、Twisted をベースにした Web クローラーです。
- WikipediaのオーディオビジュアライザーであるListen to Wikipediaは、Twistedを使用してリアルタイムの編集イベントをブラウザにブロードキャストします。[12]
- 分散データ ストアおよび分散ファイル システムであるTahoe-LAFS 。
- 高度にモジュール化されたBitTorrentクライアントであるDelugeはTwistedを使用しています。[13]
- Magic WormholeはPAKEを使用した安全なファイル転送ツールです。[14]
ネヴォウ
| 原作者 | ドノバン・プレストン[15] [16] [17] |
|---|---|
| 開発者 | ディヴモッド |
| 初回リリース | 2004年5月6日 |
| 安定リリース | 0.14.4 / 2018年6月14日[18] |
| リポジトリ |
|
| 書かれた | パイソン |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | Web アプリケーション フレームワーク |
| ライセンス | MITライセンス |
| Webサイト | 詳しくはこちら |
Nevow (フランス語のnouveauと同じ発音) は、もともと Divmod 社によって開発されたPython Web アプリケーション フレームワークです。テンプレートの置換は、通常はディスク上のXMLテンプレートに埋め込まれている小さなタグ属性言語によって実現されますが、このマークアップをプログラムで表現するための Stan と呼ばれる純粋な Pythonドメイン固有言語もあります。Nevow は Twisted とうまく統合されます。
Nevowはいくつかの有名なウェブサイト、特に公式Pythonサイトに導入されました。[19]
2010年半ばにDivmodは倒産し[20] 、 Nevowの開発作業は事実上停止し、2011年にはホームページにアクセスできなくなりました。[21] LaunchpadにはDivmodのソースコードをホストするプロジェクトがあり[22]、 Nevowプロジェクトのソースコードも含まれています。[23]
アテナ
Athenaは、リモートプロシージャコールの形でウェブアプリケーションのPython部分とJavaScript部分の間の双方向の非同期通信を容易にするNevowコンポーネントです。この技術は一般的にAjaxまたはCometと呼ばれますが、Nevowの実装はこれら両方の名称よりも古いものです。[24] Athenaには継承ベースのJavaScriptオブジェクトシステム も含まれており、クライアント側ウィジェットの抽象化、モジュールシステム、ブラウザ内ユニットテストキットの基礎を形成します。
参照
- アプリケーションサーバー
- リアクターパターン
- Perl オブジェクト環境、 Perlプログラミング言語の類似フレームワーク
- Netty、Javaプログラミング言語用
- Node.js(Javascript用)
- EventMachine 、 Rubyのイベント処理ライブラリ[25]
- Kivy (フレームワーク)、マルチプラットフォーム GUI フレームワーク (iOS および Android を含む) [26]
参考文献
- ^ Shtull-Trauring, Itamar (2002-10-22). 「Twisted 1.0」. twisted-python (メーリング リスト) . 2008-08-14に取得。
- ^ 「リリース 24.10.0」。2024年10月28日。 2024年11月27日閲覧。
- ^ 「BuildBot マニュアル」。github.com。2012年7月29日時点のオリジナルよりアーカイブ。 2017年10月28日閲覧。
- ^ 「Python がシステムに侵入」eweek.com。
- ^ SageMath#機能
- ^ Sage の基本概要[永久リンク切れ ]
- ^ “ミスタ・ディージェイ”. omegler.blogspot.com。
- ^ 「Google グループ」。groups.google.com。
- ^ 「カレンダーと連絡先サーバー」www.calendarserver.org。
- ^ 「Twitch - 求人」. Twitch .
- ^ 「Velocity Weather -」。www.velocityweather.com。
- ^ Wikipedia 用の WebSocket 指向のモニター (ウィキモン、ウィキタル モンスターとも)、ハットノート、2017 年 9 月 3 日、 2017 年 9 月 21 日取得
- ^ 「Deluge: ソースからビルド」dev.deluge-torrent.org . 2020年1月8日閲覧。
- ^ 「マジックワームホール」. github.com .
- ^ 2004年のこの論文は、 ウェイバックマシンのNevowとFormless Archiveインデックスの原作者であるドノヴァン・プレストンによるものです。
- ^ Nevow: Web アプリケーション構築キット、ドノヴァン プレストン
- ^ 件名: Re: ANN: Twisted 1.1.0、*あなたの*インターネットのフレームワーク、送信者: Donovan Preston、日付: 2003-10-27、ニュースグループ: gmane.comp.python.twisted、nevow は元々研究プロジェクトでした。週末にハッキングした結果、 非常に大きなメリットが得られたため、Quotient でできるだけ早く使用できる状態にすることに重点を置くことにしました。そして、それが現在の状態です。
- ^ 「リリース · twisted/nevow」。GitHub 。 2020年11月4日閲覧。
- ^ PythonWebsitePyramidDocs、Pyramid は python.org ページの構築に使用される内部 Web サイト テンプレート システムです。(Pylons で使用される、以前は BFG と呼ばれていた Pyramid Web フレームワークとは関係ありません。) Pyramid は、テンプレート システムとして Nevow を使用し、ファイル ベースのデータの形式として YAML を使用します- PythonInfo Wiki、python.org
- ^ さようなら、Divmod。こんにちは、世界!、2009 年 7 月 10 日、グリフの解読
- ^ Divmod Nevow コミット 2012-10-15 に Wayback Machine でアーカイブされました( Ohloh )
- ^ Divmod 2006年8月13日アーカイブ、Wayback Machine
- ^ Launchpad上の Divmod
- ^ 履歴 アーカイブ 2016-03-03 at the Wayback Machine、 Nevow Athena from Scratch、またはチャットアプリケーションの進化 — Divmod Nevow vtrunk ドキュメント
- ^ 「EventMachine」 。 2011年8月20日閲覧。
- ^ 「他のフレームワークとの統合 — Kivy 1.11.0.dev0 ドキュメント」。kivy.org。
外部リンク
- 公式サイト
