| チェリーパイ | |
|---|---|
| 開発者 | CherryPyチーム |
| 初回リリース | 2002年6月[ 1 ] (2002-06) |
| 安定版リリース | |
| リポジトリ | CherryPyリポジトリ |
| 書かれた | パイソン |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | Webアプリケーションフレームワーク |
| ライセンス | BSDライセンス[ 3 ] |
| Webサイト | チェリーパイ |
CherryPyは、 Pythonプログラミング言語を使用したオブジェクト指向のWebアプリケーションフレームワークです。HTTPプロトコルをラップすることでWebアプリケーションを迅速に開発できるように設計されていますが、低レベルであり、 RFC 7231で定義されている以上の機能は提供していません。
CherryPyは、それ自体がWebサーバーとして機能することも、WSGI互換環境から起動することもできます。出力レンダリングやバックエンドへのアクセスのためのテンプレート作成といったタスクは扱いません。このフレームワークは、リクエスト/レスポンス処理の特定の時点で呼び出されるフィルターによって拡張可能です。
Pythonインターフェース
プロジェクト創設者であるレミ・デロン氏の目標の一つは、 CherryPyを可能な限りPythonらしくすることでした。これにより、開発者はフレームワークを通常のPythonモジュールのように使用でき、(技術的な観点から言えば)アプリケーションがWeb向けであることを忘れる必要がなくなります。
たとえば、CherryPy 3 を使用した 一般的なHello Worldプログラムは次のようになります。
CherrypyをインポートするクラスHelloWorld : def index ( self ): return "Hello World! " index .exposed = Truecherrypy .クイックスタート( HelloWorld ())特徴
CherryPy は以下を実装します:
- HTTP /1.1準拠のWSGIスレッドプール型ウェブサーバー。[ 4 ]通常、CherryPy自体は1ページあたり1~2ミリ秒しかかかりません。[ 5 ] [ 6 ]
- Apache、IIS、lighttpd、mod_python、FastCGI、SCGI、mod_wsgiなど、その他の WSGI 対応Web サーバーまたはアダプターのサポート。
- ネイティブmod_pythonアダプター。
- 複数のHTTPサーバー(例:複数のポートをリッスンする機能)[ 7 ]
- プラグインシステム[ 8 ] CherryPyプラグインは、サーバープロセス内のイベント(サーバーの起動、サーバーのシャットダウン、サーバーの終了など)にフックして、サーバーの起動時またはシャットダウン時に実行する必要があるコードを実行します。
- キャッシュ、エンコード、セッション、認証、静的コンテンツなどのための組み込みツール。CherryPyツールは、リクエストプロセス内のイベントにフックします。CherryPyサーバーがリクエストを受信すると、そのリクエストを処理するために特定の手順が実行されます。ページハンドラーは、このプロセスにおける1つのステップにすぎません。ツールは、特定のハンドラーセットに対してページハンドラーをオン/オフするための構文と設定APIも提供します。
- 開発者とデプロイヤー向けの設定システム。[ 9 ] [ 10 ] [ 11 ] CherryPyのデプロイメントは、Python辞書、設定ファイル、オープンファイルオブジェクトを通じて、サイトレベル、アプリケーションレベル、コントローラレベルで設定可能です。
- CherryPyアプリケーションのテストに使用できるコア機能と関連フレームワークの完全なテストスイート。 [ 12 ]
- バージョン2.1以降はプロファイリングが組み込まれ、[ 13 ]カバレッジ[ 14 ]およびテストがサポートされています。
CherryPy では、特定のオブジェクトリレーショナルマッパー(ORM)、テンプレート言語、またはJavaScript ライブラリの使用を強制しません。
CherryPyで使用可能
- Routes — URLをコントローラ/アクションにマッピングし、URLを生成するためのRuby on RailsのルートシステムをPythonで再実装したもの。[ 15 ]
オブジェクトリレーショナルマッパー
- SQLAlchemy — Pythonアプリケーション用のデータベースバックエンドおよびORM。TurboGears 2.xはCherryPyをサーバーとして、SQLAlchemyをデフォルトのORMとして使用しています。[ 16 ]
- SQLObject — データベースへのオブジェクトインターフェースを提供するための一般的なORMです。多くの一般的なデータベースバックエンドをサポートしています。ディストリビューションには、MySQL、PostgreSQL、SQLite、Sybase SQL Server、MaxDB、Microsoft SQL Server、Firebirdが含まれています。TurboGears 1.xは、サーバーとしてCherryPy、ORMとしてSQLObjectを使用しています。[ 17 ]
- Storm — Canonical Ltd. ( Ubuntuのメーカー)のORM
- Dejavu [ 18 ] — Pythonアプリケーション用のパブリックドメインソフトウェア、スレッドセーフなORM
- MongoEngine — MongoDBに接続するためのODM。
テンプレート言語
- Mako [ 19 ] — Pythonで書かれたテンプレートライブラリで、シンプルなCherryPyツールで使用できます。[ 20 ]
- Cheetah — Python で書かれたオープンソースのテンプレート エンジンおよびコード生成ツール。
- CherryTemplate — CherryPy 用のテンプレート言語。
- Genshi [ 21 ] [ 22 ] — 強力なXMLテンプレート言語。
- Jinja — 汎用テンプレート言語。CherryPyにはJinjaテンプレートを使用するためのツールがあります。[ 23 ]
- Kid — Pythonで書かれたXMLベースのボキャブラリのためのシンプルなテンプレート言語。TurboGears 1.xでは、サーバーとしてCherryPy、フロントエンドとしてKidを使用しています。[ 24 ]
CherryPy wikiはテンプレート言語の選択に 役立ちます[ 25 ] 。
CherryPyを使用した製品
- TurboGears — CherryPy 2.x は、TurboGears 1.x のメイン コンポーネントです。
- Splunk Enterprise - CherryPy 3.1.2 [ 26 ]
参照
参考文献
- ^ 「CherryPyの歴史」。
- ^ 「リリース v18.10.0」。2024年6月15日。 2025年2月2日閲覧。
- ^ "cherrypy / CherryPy / source / cherrypy / LICENSE.txt" . BitBucket. 2017年7月15日時点のオリジナルよりアーカイブ。 2015年2月21日閲覧。
- ^ 「CherryPy — ミニマリスト Python Web フレームワーク」。
- ^ 「CherryPy v3 WSGIサーバーのベンチマーク結果」 。 2016年3月3日時点のオリジナルよりアーカイブ。2009年9月23日閲覧。
- ^ CherryPy はどれくらい速いのか? 2010年2月10日アーカイブWayback Machine
- ^ 「CherryPyで複数のHTTPサーバーを設定する方法」 。 2016年3月3日時点のオリジナルよりアーカイブ。2009年9月23日閲覧。
- ^ CherryPyを使ったカスタムエンジンプラグインArchived 3 May 2009 at the Wayback Machine
- ^ CherryPyの設定システムArchived 26 June 2009 at the Wayback Machine
- ^ CherryPyの設定API 2009年7月1日Wayback Machineにアーカイブ
- ^設定オプションの簡単な概要
- ^ CherryPy 自体のテスト方法Archived 27 September 2009 at the Wayback Machine
- ^ CherryPyのプロファイラモジュールArchived 9 February 2010 at the Wayback Machine
- ^ 「CherryPyを使ってアプリケーションコードのカバレッジデータを収集し分析する方法」 。 2015年11月17日時点のオリジナルよりアーカイブ。 2009年9月23日閲覧。
- ^ 「Routesを使用するCherryPy用のシンプルなディスパッチャツール」 。 2016年1月14日時点のオリジナルよりアーカイブ。2009年9月27日閲覧。
- ^ TurboGears 2.x はサーバーとして CherryPy を使用し、デフォルトの ORM として SQLAlchemy を使用します。
- ^ TurboGears 1.x は CherryPy をサーバーとして、SQLObject を ORM として使用しています。2009 年 9 月 22 日、 Wayback Machineにアーカイブされています。
- ^ Dejavu 2009年5月17日アーカイブ、 Wayback Machine
- ^マコ
- ^ 「Makoテンプレート用のシンプルなCherryPyツール」 。 2016年3月3日時点のオリジナルよりアーカイブ。2009年9月21日閲覧。
- ^ 「CherryPy – Genshi」 . 2009年9月26日閲覧。
- ^ “Genshi - CherryPy Tools - Trac” . 2012年2月27日時点のオリジナルよりアーカイブ。2009年9月26日閲覧。
- ^ 「Jinjaテンプレートを使用するための基本的なCherryPyツール」 。 2015年9月5日時点のオリジナルよりアーカイブ。2009年9月23日閲覧。
- ^ TurboGears 1.x は CherryPy をサーバーとして、Kid をフロントエンドとして使用しています。2009 年 9 月 22 日、 Wayback Machineにアーカイブされています。
- ^ CherryPy wiki テンプレート言語の選択に関する記事Archived 10 February 2010 at the Wayback Machine
- ^ 「CherryPy - Splunk Knowledgebase」 . 2015年11月17日時点のオリジナルよりアーカイブ。2015年3月24日閲覧。