つまり何したの?
Tornadoアプリを作ってフォークして使ってもらえるようにした。
前回のDjangoの例から拾い上げた必要そうな要素:
- Procfile
- runtime.txt
- requirements.txt
- app.json
すぐ使えるように作ったリポジトリがこちら
github.com
試してみる
# 拾ってくる % git clone https://github.com/EnsekiTT/HerokuTest.git % cd HerokuTest # Heroku上で実行する % heroku create % git push heroku master % heroku open # ローカルで実行する % pyenv virtualenv 3.5.2 herokutest % pyenv local herokutest % pip install -r requirements.txt
必要そうな要素の説明
Procfile: 実行するコマンドを指定する
web: python server.py --port=$PORT
Herokuのポート番号は$PORTで与えられることに注意
requirements.txt: 必要なPythonのパッケージを指定する
tornado==4.4.2
ここではTornadoだけ。必要に応じて
pip freeze > requirements.txt
などして追加編集する
server.py: サーバ本体
import tornado.ioloop import tornado.web from tornado.options import define, options define("port", default=5000, help="run on the given port", type=int) tornado.options.parse_command_line() class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") def make_app(): return tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": app = make_app() app.listen(tornado.options.options.port) tornado.ioloop.IOLoop.current().start()
Tornadoのチュートリアルとほとんど同じ。
Tornado Web Server — Tornado 4.4.2 documentation
Procfileの指定の通り、ポート番号を引数で得るように変更してある。
まとめ
これでHerokuボタンで使ってもらえるかも知れないアプリが作れるようになった。