[解決済み] Google App EngineのためのFlaskとwebapp2の比較
質問
Google App Engineのアプリケーションを新規に立ち上げるのですが、現在2つのフレームワークを検討しています。 フラスコ と webapp2 . 以前のApp Engineアプリケーションで使用したビルトインwebappフレームワークにはむしろ満足しているので、webapp2はさらに良くなると思うし、問題はないだろうと思っています。
しかし、Flaskについては良い評価が多く、そのアプローチやこれまでのドキュメントを読んだ限りでは本当に気に入っており、試してみたいと思っています。しかし、私はFlaskの先々で直面する可能性のある制限について少し心配しています。
そこで質問なのですが Flask が Google App Engine アプリケーションにもたらす可能性のある問題、パフォーマンスの問題、制限(ルーティングシステム、組み込みの認証メカニズムなど)をご存知ですか? 問題"問題は、私が数行のコード(または任意の合理的な量のコードと努力)で回避できないもの、または完全に不可能であるものを意味します。
そしてフォローアップの質問ですが、Flaskのキラー機能で、私の心を打ち、私が直面しうるどんな問題にもかかわらずそれを使わせることができると思うものはありますか?
どのように解決するのですか?
免責事項です。 私はtipfyとwebapp2の作者です。
webapp(またはその自然な進化であるwebapp2)にこだわる大きな利点は、あなたが選んだフレームワークのために、既存のSDKハンドラ用の独自のバージョンを作成する必要がないことです。
たとえば 遅延 は webapp ハンドラを使っています。これを純粋な Flask ビューで werkzeug.Request と werkzeug.Response を使って使うには、これに対して deferred を実装する必要があります (私がやったように ここで をtipfy用にしたように)。
他のハンドラについても同じことが言えます: blobstore (Werkzeug はまだレンジリクエストをサポートしていないので、独自のハンドラを作成する場合でも WebOb を使用する必要があります -- こちらを参照してください)。 を参照してください。 を参照)、メール、XMPP など、または将来 SDK に含まれるその他のものを使用する必要があります。
また、App Engine を念頭に置いて作成された、次のようなライブラリについても同様です。 ProtoRPC のように、App Engineを考慮して作成されたライブラリも同様です。これはwebappをベースにしており、webappと選択したフレームワークのハンドラを同じアプリで混在させたくない場合は、他のフレームワークで動作させるためのポートまたはアダプタが必要になります。
したがって、たとえ別のフレームワークを選択したとしても、a) いくつかの特殊なケースで webapp を使用する、または b) 特定の SDK ハンドラーまたは機能を使用する場合は、そのバージョンを作成および保守する必要がある、ということになります。
私は WebOb よりも Werkzeug をはるかに好みますが、tipfy でネイティブに動作する SDK ハンドラーのバージョンを 1 年以上移植および保守した後、これは失われた原因であることに気づきました -- GAE を長期的にサポートするには、webapp/WebOb に近づくことが最善です。それは、SDK ライブラリのサポートを容易にし、メンテナンスが非常に簡単になり、新しいライブラリや SDK の機能がすぐに動作するためより将来性があり、同じ App Engine ツールを扱う大きなコミュニティという利点もあります。
具体的なwebapp2の防御策をまとめると はこちら . それらに加えて webapp2 は App Engine 以外でも使用可能です であり は、人気のあるマイクロフレームワークのようにカスタマイズすることが容易です。 であり、それを目指す説得力のある理由の良いセットを持っています。また、webapp2は、将来のSDKリリースに含まれる大きなチャンスがあります(これは非公式なものです。引用しないでください:-)。
とはいえ、私はWerkzeugとPocooの大ファンですし、Flaskや他のもの(web.py、Tornado)から多くを借りましたが、--ご存知のように、私は偏っています--上記のwebapp2の利点は考慮されるべきものです。
関連
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] __init__.py は何のためにあるのですか?
-
[解決済み] Flaskのリクエストで受信したデータを取得する
-
[解決済み] Google App EngineとGoogle Compute Engineの違いは何ですか?
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】コード変更時のPython Flaskアプリの自動再読み込み
-
[解決済み] Pythonでzip(*[iter(s)]*n)はどのように動作するのですか?
-
[解決済み] タプルの代わりにリストで出力するZip
-
[解決済み] virtualenvのどこにカスタムコードを置くか?
-
[解決済み] ネストした辞書の項目からpandasのDataFrameを構築する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] テンプレートファイル変更時にFlaskアプリを再読み込みする
-
[解決済み] 2つの弦をインターリーブさせる最もピトニックな方法
-
[解決済み] asyncio.ensure_future vs. BaseEventLoop.create_task vs. simple coroutine?
-
[解決済み] python BeautifulSoup テーブルのパース
-
[解決済み] python: 2階層上のディレクトリを取得する
-
[解決済み] readonlyプロパティをmockでモックするには?
-
[解決済み] リストの各要素に数値を乗じるには?