python で簡単に WEB アプリを作るには

他の WEB サイトと連携する WEB アプリを開発していますが、連携テストをする必要がありました。

単体のリクエストでなく、WEB サイトに何度か GET/POST するようなシーケンスであり、cgi ではやりづらいです。

python には、wsgiref などといったモジュールがありますが、まあまあ面倒ですし、プロダクションレベルで使えるものではなさそうです。apache や nginx といった WEB サーバなしで単体で WEB サーバとして動くようなモジュールが無いのかなあ、と思い検索してみました。

探してみると responder というフレームワークがありました。

これは私のニーズにマッチしていました。

  • uvicorn という WEB サーバが内蔵されていて、コードを実行すれば WEB サーバとして起動する
  • Flask-style route expression – URL の指定が簡単
  • フォーム値や、POST データの取得や、レスポンスの作成が簡単
  • テンプレートが使える

WEB アプリを作ったことがある人なら、Quick Start を見れば、一瞬でファンになることでしょう。

DB アクセスに関してはORM は無いので必要なら何かモジュールを使うことになるでしょう。今回は、簡単なテスト用アプリだったので、pymysql で十分でした。

他にも、既存の WSGI / ASGI アプリがマウントできるなど、試してみたい機能もあります。

python で本格的な WEB アプリケーションを開発するなら、django のような Web Application Framework のほうがよいと思いますが、軽量な WEB サーバや、バックエンドサーバなどを構築するのであれば、responder は非常に使い勝手が良い印象です。

改造しようとしていたコードは多少はテストに役に立った python コードではありました。標準ライブラリには、wsgiref という、いまいち単体では使いづらいリファレンス実装しかなく、かといって、django といった機能が盛り沢山のフレームワークを使うほどでもありません。python にこだわる必要もないよなあ、捨てて他のもので書き直すべきなのかなあ、と思いましたが、そこまでする時間もなかったので、非常に助かりました。

ありがとう、作者さん!

ドキュメント: https://responder.readthedocs.io/en/latest/

1969年生まれ。大学卒業後から15年以上にわたり、通信、カードリーダ、セキュリティ業界においてソフトウェア開発に従事。その後、2012年5月に当社を設立。電力、交通、車載向けの組み込み系システム、旅行業界向けの WEB システム開発、音声合成システム、消防向けのシステム開発等に参画。
低コストかつシンプルで安定稼働するシステムの実現を目指し、アーキテクチャ設計に取り組んでいます。
会社情報と代表者守屋のプロフィール詳細