tornado やってみたメモ

なんか作りたい人はこんなところを見ていないで ドキュメント 読めばわかるし読んでわからないなら諦めてください。

弄っているソースは ここらへん に置いてあるはず。

URL mapping

とりあえずこれですよ。

app = web.Application([
        ('/', serve.MainHandler),
        ('/websock', serve.OnWebsock),
        ('/yes/(.*)', serve.YesHandler),
        ('/print/(?P<aaa>.*)', serve.PrintHandler),
        ])

何となくこんな感じでやるらしい。

  • 正規表現で書く
  • グルーピングも使える
  • 名前付きグループと名前なしグループは混ぜられない

というところをおさえておけばいいっぽい。

リクエストの処理

まあなんとなくわかるよね。

class PrintHandler(web.RequestHandler):

    def get(self, *args, **argd):
        u'''
        :param *args: URL マッピング時の名前なしグルーピング
        :param **argd: URL マッピング時の名前付きグルーピング
        
        レスポンスボディは self.write で書き込んでやる。
        '''

        # レスポンスヘッダを弄る
        self.set_header('Content-Type', 'text/plain;charset=utf-8')

        print >> self, args, argd

        # URL パラメータから値を一個取る
        print >> self, self.get_argument('aaa')

        # URL パラメータから値を全部取る
        print >> self, self.get_arguments('aaa')

        # self.request がリクエストオブジェクト
        # リクエストオブジェクトの arguments にパラメータが辞書で入っている
        pprint.pprint(self.request.arguments, stream=self)

とりあえず今日はここまで。