【tornado】1.建立http伺服器
阿新 • • 發佈:2019-01-08
一個基礎框架:
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個)
- 不建議直接啟動多程序,而是使用手動建立子程序的方式,同時手動啟動多個程序還可以繫結不同的埠