Tornado

オンラインドキュメント

https://pypi.org/project/tornado/

https://www.tornadoweb.org/en/stable/

インストール

pip install tornado
1

使い方

helloサンプル

以下の内容で tornado_hello.py を作成する。

import tornado.ioloop
import tornado.web
 
 
class RootHandler(tornado.web.RequestHandler) :
 
    def get(self):
        self.write("Hello, world")
 
 
class SecondHandler(tornado.web.RequestHandler) :
 
    def get(self):
        self.write("Hello, eagle-eight")
 
 
def make_app():
    return tornado.web.Application([
        (r"/", RootHandler),
        (r"/second/", SecondHandler),
    ])
 
 
if __name__ == "__main__" :
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

コマンドプロンプトで python tornado_hello.py を実行する。

http://localhost:8888/http://localhost:8888/second/ にアクセスして動作を確認する。

form、テンプレートのサンプル

以下の内容で tornado_form.py を作成する。

import tornado.ioloop
import tornado.web
 
 
class InputHandler(tornado.web.RequestHandler) :
 
    def get(self):
        self.render("input_text_form.html")
 
 
class ResultHandler(tornado.web.RequestHandler) :
 
    def post(self):
        input_text = self.get_argument("input_text")
        self.render("input_text_result.html", result=input_text)
 
 
def make_app():
    return tornado.web.Application([
        (r"/input/", InputHandler),
        (r"/result/", ResultHandler),
    ])
 
 
if __name__ == "__main__" :
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

以下の内容で input_text_form.html を作成する。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>form_input_text_sample</title>
    <style>
      input  { width: 400px; }
      input[type="submit"]  { width: 100px; }
    </style>
  </head>
  <body>
    <form method="post" action="/result/">
      <p><input type="text" name="input_text"></p>
      <p><input type="submit" value="入力内容確認"></p>
    </form>
  </body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

以下の内容で input_text_result.html を作成する。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>form_input_text_sample:入力内容確認</title>
  </head>
  <body>
    <p name="input_text_result">{{ result }}</p>
  </body>
</html>
1
2
3
4
5
6
7
8
9
10

コマンドプロンプトで python tornado_form.py を実行する。

http://localhost:8888/input/ にアクセスして動作を確認する。

アクセス制限のサンプル

以下の内容で tornado_hello_2.py を作成する。

アクセスをローカルホストに限定できる。

import tornado.ioloop
import tornado.web
 
 
class RootHandler(tornado.web.RequestHandler) :
    def get(self):
        self.write("Hello, world")
 
 
def make_app():
    return tornado.web.Application([
        (tornado.web.HostMatches(r"(localhost|127\.0\.0\.1)"), [
            (r"/", RootHandler),
        ]),
    ])
 
 
if __name__ == "__main__" :
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

コマンドプロンプトで python tornado_hello_2.py を実行する。

http://localhost:8888/ にアクセスして動作を確認する。他のPCからアクセスすると 404: Not Found と表示される。