問題
/でアクセスされたら"Hello"を返すぐらい適当なウェブサーバを立てたい。ファイルのPOSTを受け取れるのが条件。
アプローチ
Junoというのがあった。Repositoryも小さめで、読破するのも悪くなさそうだなと思いながら実装進めてたらなんと
ファイルアップロードできないなど(くそぅパッチ送ろう)
アプローチ改
気を取り直して軽量フレームワーク探す
Flaskというのがあるらしい。Repositoryへコミットはさすがに無理そうな規模。でもいい感じ。
ということでFlaskのインストールと、ミニマムな実装をしてみた備忘録。
記録
[20:47:41] % pip search Flask FlaskEx - UNKNOWN flasker - Flasker kit - Flask, Celery, SQLAlchemy integration framework. Flask-Mail - Flask extension for sending email Flask-WTF - Simple integration of Flask and WTForms flask-peewee - Peewee integration for flask Flask-SeaSurf - An updated CSRF extension for Flask. Flask-Cache - Adds cache support to your Flask application Flask-Admin - Simple and extensible admin interface framework for Flask Flask-Security - Simple security for Flask apps Flask-Exceptional - Adds Exceptional support to Flask applications Flask-GoogleLogin - Extends Flask-Login to use Google\'s OAuth2 authorization Flask - A microframework based on Werkzeug, Jinja2 and good intentions alchemist - A server architecture built on top of a solid foundation provided by flask, sqlalchemy, and various extensions. Flask-Actions - custom actions for flask to help manage your application # 以下略
これやな
[20:50:41] % sudo pip install Flask Downloading/unpacking Flask Downloading Flask-0.10.1.tar.gz (544kB): 544kB downloaded # 中略 # no previously-included directories found matching 'docs/_build' Running setup.py install for itsdangerous warning: no previously-included files matching '*' found under directory 'docs/_build' Successfully installed Flask Werkzeug itsdangerous Cleaning up...
そういえば、APIの処理の中で使いたいライブラリが2.6.6しか対応してなかったので
[20:52:11] % python --version Python 2.6.6
importできるか確認
[20:52:19] % python Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import Flask Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named Flask >>> from flask import Flask >>> exit()
OK。ミニマムなサーバ書く
[21:01:32] % cat minimum.py from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "This GET '/'" if __name__ == "__main__": app.run(host='otiai10.com') [21:01:35] % python minimum.py * Running on http://otiai10.com:5000/
で、アクセスすると、
いけたー。
ドキュメント読んで色々やってみよう
DRYな備忘録として