はじめてのTornado
レスポンスの遅い応答を返すデバック用サーバがほしかったので、
Tornadoで作ってみました。
Tornado は、 URLパターン中に正規表現を入れると、リクエストハンドラーへリクエスト引数として渡すことができます。
class himote_check_handler(tornado.web.RequestHandler): # ([0-9]+)にマッチする箇所が、 uidとして渡される def get(self, uid): response_json = "{'mote_event_avg': %2.11f, 'user_id': %s}" # response delay uid_val = int(uid) if uid_val > 6000: os.system('sleep %d' % (uid_val / 1000)) # response json format self.write(response_json % (10.0/3.0, uid)) application = tornado.web.Application([ (r"/", MainHandler), # uidを引数で渡す (r"/atnd/uid/([0-9]+)", himote_check_handler), ])
全体のサンプル
import os import tornado.httpserver import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") class himote_check_handler(tornado.web.RequestHandler): def get(self, uid): response_json = "{'mote_event_avg': %2.11f, 'user_id': %s}" # response delay uid_val = int(uid) if uid_val > 6000: os.system('sleep %d' % (uid_val / 1000)) # response json format self.write(response_json % (10.0/3.0, uid)) application = tornado.web.Application([ (r"/", MainHandler), (r"/atnd/uid/([0-9]+)", himote_check_handler), ]) def main(): http_server = tornado.httpserver.HTTPServer(application) http_server.listen(8888) tornado.ioloop.IOLoop.instance().start() if __name__ == "__main__": main()
和訳のおかげで簡単にできました。
http://tornado.shibu.jp/index.html
現在のポスト数 56 / 100