基於tornado的WEB服務

2021-10-04 19:39:05 字數 2135 閱讀 8698

搭建乙個微型的web服務,監聽8000埠,如有接收到客戶端的網頁請求,根據請求的路徑 返回 對應的資訊。

監聽埠設定:命令列或是python指令碼內?如何設定

web.py程式執行時,必須監聽伺服器端口,以便向客戶提供服務。如果我們將埠,定義在指令碼 內部,那麼,如果想要改動監聽的埠,我們必須要修改指令碼。如果改動次數過多,非常麻煩。所以在執行指令碼 時,如果給定監聽埠號,就不必再修改內部**。命令給定埠號,便於修改監聽的埠。

但是,有時命令不寫埠,那麼內部就不知道該監聽那個埠。所以,內部還是要寫乙個埠號。這個埠號,要求如果外部命令沒有指定監聽的埠,就做預設監聽埠

tornado給我們提供了乙個庫options,這個庫可以從外部命令中獲取指定的引數。這樣,就可以通過物件option來傳遞命令引數。

options有乙個方法:define,來設定字串預設的值。

下面是實現方法:web.py指令碼。

#coding=utf-8

import tornado.options

from tornado.options import define,options

#埠這裡我們用port來表示。比如外部命令:python web.py --port=8000

#那麼在指令碼內部,options物件會新增一屬性:options.port=8000

define("port",default=8000,help="run on given port,default 8000",type=int)

#這裡define 是options庫里的乙個函式方法。

#第乙個引數傳遞設定的物件名稱。

#default 表示如果該物件沒有值 就以後面的8000作為預設值。

#help 表示外部命令呼叫幫助時顯示的資訊。如外部命令:python web.py --help

#type 表示物件 值 的屬性,int 為數字整形。

tornado.options.parse_command_line()

#parse_command_line函式方法,表示根據命令列的輸入,處理對應的引數。

建立web應用和請求響應類

**如下:

http_server.listen(options.port) #繫結埠

tornado.ioloop.instace().start()完整的**如下:此處做一些修改__name__ == __main__。防止 其它程式 呼叫 web.py時出錯。

#定義port,預設值

define("port",default=8000,help="run on the given port,default 8000",type=int)

#處理請求類

class indexhandler(tornado.web.requesthandler):

def get(self):

self.write("hello.")

#路由對映

handlers =[(r"/",indexhandler)]

#當該指令碼為自動呼叫時

if __name__ == "__main__":

tornado.options.parse_command_line() #解析命令列。

#建立web應用

基於tornado的http服務框架

安裝etornado 0.1.6版本,該版本基於python 3.6,所以 先用conda建立py36環境 conda create name py36 python 3.6 啟用該環境 conda activate py36 安裝etornado pip install etornado 0.1....

使用 Tornado 建立簡單的 Web 服務

讓我們先看一段程式 hello.py 我們可以通過命令列執行 python hello.py port 8888 來執行程式。這裡命令列引數 port 8888 可以省略。如果省略,則使用程式中用 define 定義的預設值。我們後面將會解釋。現在開啟乙個瀏覽器,訪問 http localhost ...

基於HttpListener的web伺服器

前面兩篇文章分別介紹了基於原始socket的web伺服器和基於tcplistener的web伺服器,本篇文章將繼續介紹另外一種基於httplistener的。httplistener進一步的簡化了http協議的監聽,僅需通過字串的方法提供監聽的位址和埠號以及虛擬路徑,就可以開始監聽工作了。設定字首,...