主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Python: herokuでTornadoで非同期じゃないサーバをやってみる

                
tags: python heroku
 GoogleAppEngineのPythonがいまだに3.x対応しない。アルファ版とかそんな気配も見せずに公式コミュニティの該当トピックはクローズされていたり、そんな状態でPHPがGAEの開発言語でサポートされたりと、3.x対応はする気がないように見受けられる。では3.4もいけるherokuはどうなのかと試みてみる。
 ただherokuへ行く前にGAEについてもちょっと。相変わらず3.x対応はしないものの、自分の趣味程度に使うにはおそれおおいぐらいにGAEはいい環境をくれると思う。データベースは独自のNoSQLではあるがSQLモドキが使えるし、SQLなしでも簡単に使えるようになっている。無料範囲内での作成可能なアプリの数やデータストアの容量も結構な量。標準データストアは1GBだし、大容量ファイルを入れるBlobストアは5GBである。

 まあ試し程度にherokuでアプリをデプロイしてみる。herokuで最初のアプリをデプロイしてみる記事は多くあるので細かいことはここには書かない。ただTornadoで非同期ではないサーバを立てているものは見つからなかったのでそこらへんだけ。

 TornadoによるアプリをGunicornサーバで。Procfileには以下のように。
web: gunicorn main:wsgi_app
コマンドに出てきているmainファイルとその中のwsgi_appを定義する。
import os

import tornado.web
import tornado.wsgi


class HelloHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello.")


settings = {
"static_path": os.path.join(os.path.dirname(__file__), "static"),
}

application = tornado.web.Application([
("/", HelloHandler),
], **settings)

wsgi_app = tornado.wsgi.WSGIAdapter(application)

上記のように書けばherokuでもTornadoのノンブロッキングでない他のフレームワークと同様の仕組みで動くWebアプリができる。

 ぼくは今はPythonを書くのはほぼWindows上だ。動くものはWindows上で動かしている。しかし今回使ったGunicornはUNIXサーバなのでWindows上でこのアプリのローカルテストができない。テストに適したスマートなUNIXサーバの準備方法を考える。
 以前に触ってみたDockerが助けてくれそうに思える。プレーンな実行環境を用意して、必要なものだけインストールして、書いたコードをそこに入れて動かしてみる、一連のテストが終わったらその環境を破棄する、コード編集後またプレーンな実行環境を用意してテスト……と繰り返す。プレーンな実行環境というわけでなければ仮想マシンで適当なOSを動かしっぱなしにすればいいんだけど。Dockerならプレーンな環境の用意が楽だし、必要最小限しかリソースを割かなくて済むだろう。
 今後Dockerでテスト環境の用意をやってみることにする。
            

コメントの投稿

非公開コメント

プロフィール

Matoba

Author:Matoba

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。