1. 程式人生 > >【tornado】1.建立http伺服器

【tornado】1.建立http伺服器

一個基礎框架:
import tornado.web
import tornado.ioloop

class IndexHandler(tornado.web.RequestHandler):
    # IndexHandler只能接收get方法,不能接收post方法
    def get(self):
        self.write("test")

if __name__=="__main__":
    # Application是tornado的核心應用類
    # app裡面儲存了路由對映表,同時有一個listen方法可以用於建立http伺服器的例項
    app=
tornado.web.Application([ (r"/",IndexHandler) ]) # 此行建立了一個伺服器,並綁定了一個埠,但是沒有開啟此伺服器 app.listen(8000) # current()返回當前執行緒的IOLoop例項 # start()啟動迴圈,開啟監聽 tornado.ioloop.IOLoop.current().start()

顯式地建立一個伺服器:
import tornado.web
import tornado.ioloop
import tornado.httpserver  #需要引入httpserver模組
class IndexHandler(tornado.web.RequestHandler): def get(self): self.write("test") if __name__=="__main__": app=tornado.web.Application([ (r"/",IndexHandler) ]) # 建立一個伺服器,伺服器使用的路由對映表資訊來自app httpServer=tornado.httpserver.HTTPServer(app) httpServer.listen(8000) tornado.
ioloop.IOLoop.current().start()
  • tornado的web應用物件app的listen和伺服器的listen不是同一個listen,因為它們屬於不同的類,是不同的方法
  • 第一段程式碼和第二段程式碼實質是一樣的,只是第二段程式碼可以體驗實際建立一個伺服器的過程。

伺服器啟用多程序:
import tornado.web
import tornado.ioloop
import tornado.httpserver

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("test")

if __name__=="__main__":
    app=tornado.web.Application([
        (r"/",IndexHandler)
    ])
    httpServer=tornado.httpserver.HTTPServer(app)
    # httpServer.listen(8000)

    httpServer.bind(8000)
    httpServer.start(5)

    tornado.ioloop.IOLoop.current().start()
  • 首先如果要使用多程序就不能直接用伺服器listen一個視窗了(listen只能在單程序模式中使用)
  • 多程序要改用bind+start方法。其中start方法中的數字是最高程序數(預設是1個)
  • 不建議直接啟動多程序,而是使用手動建立子程序的方式,同時手動啟動多個程序還可以繫結不同的埠