最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python探索之BaseHTTPServer-實(shí)現(xiàn)Web服務(wù)器介紹

 更新時(shí)間:2017年10月28日 15:40:11   投稿:mengwei  
這篇文章主要介紹了python探索之BaseHTTPServer-實(shí)現(xiàn)Web服務(wù)器介紹,小編覺得還是挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。

Python探索之SocketServer詳解中我們介紹了Python標(biāo)準(zhǔn)庫中的SocketServer模塊,了解了要實(shí)現(xiàn)網(wǎng)絡(luò)通信服務(wù),就要構(gòu)建一個(gè)服務(wù)器類和請(qǐng)求處理類。同時(shí),該模塊還為我們創(chuàng)建了不同的服務(wù)器類和請(qǐng)求處理類。

1.服務(wù)器類

BaseServer
TCPServer(BaseServer)
UDPServer(TCPServer)
UnixStreamServer
UnixDatagramServer

2.請(qǐng)求處理類

BaseRequestHandler
StreamRequestHandler(BaseRequestHandler)
DatagramRequestHandler(BaseRequestHandler)

通過服務(wù)器類和請(qǐng)求處理類的搭配,我們可以創(chuàng)建不同類型的服務(wù)器,實(shí)現(xiàn)不同的協(xié)議類型。本文介紹的BaseHTTPServer模塊便是繼承TCPServer和StreamRequestHandler,實(shí)現(xiàn)了Web服務(wù)器的通信。

HTTP服務(wù)器

HTTP服務(wù)器繼承自SocketServer模塊中的TCPServer類。它的定義非常簡(jiǎn)單,只是重寫了其中的一個(gè)方法。

class HTTPServer(SocketServer.TCPServer):
  allow_reuse_address = 1  # Seems to make sense in testing environment
  def server_bind(self):
    """Override server_bind to store the server name."""
    SocketServer.TCPServer.server_bind(self)
    host, port = self.socket.getsockname()[:2]
    self.server_name = socket.getfqdn(host)
    self.server_port = port

重寫的server_bind()方法主要是為了獲取服務(wù)器名和端口。其余方法以及服務(wù)器的實(shí)現(xiàn)過程詳見Python探索之SocketServer詳解

此外,還可以從SocketServer模塊中引入'mix-in'類,基于HTTPServer創(chuàng)建支持進(jìn)程或線程的服務(wù)器。

HTTP請(qǐng)求處理基類

為了處理HTTP請(qǐng)求,BaseHTTPServer模塊構(gòu)造了HTTP請(qǐng)求處理基類BaseHTTPRequestHandler,它繼承自SocketServer模塊中的StreamRequestHandler類。

HTTP請(qǐng)求處理基類中有一些重要的方法:

1.handle() ——這個(gè)方法是請(qǐng)求處理類真正處理請(qǐng)求具體工作的方法,例如解析到來的請(qǐng)求,處理數(shù)據(jù),并發(fā)回響應(yīng)等。在BaseHTTPRequestHandler中它是一個(gè)入口文件,將調(diào)用其他的方法完成請(qǐng)求處理。

2.handle_one_request() ——由handle()調(diào)用,用于處理請(qǐng)求。其主要工作包括:

調(diào)用parse_request()方法,解析請(qǐng)求,獲取請(qǐng)求報(bào)文中的信息,包括請(qǐng)求的方法、請(qǐng)求URL、請(qǐng)求的HTTP版本號(hào)、請(qǐng)求首部等。如果解析失敗,則調(diào)用send_error()方法發(fā)回一個(gè)錯(cuò)誤響應(yīng)。

調(diào)用do_SPAM() 方法。這個(gè)方法中的SPAM指代GET、POST、HEAD等請(qǐng)求方法,需要在請(qǐng)求處理類中構(gòu)建具體的請(qǐng)求處理方法,例如do_GET處理GET請(qǐng)求,do_POST處理POST請(qǐng)求。do_SPAM() 方法可以調(diào)用send_response()、send_header()、end_headers()等方法創(chuàng)建響應(yīng)首行和響應(yīng)首部等內(nèi)容。

3.parse_request() ——解析請(qǐng)求。

4.send_error() ——發(fā)回錯(cuò)誤響應(yīng)。

5.send_response() ——?jiǎng)?chuàng)建響應(yīng)首行和響應(yīng)首部等內(nèi)容。

6.send_header() ——設(shè)置響應(yīng)首部?jī)?nèi)容。

7.end_headers() ——調(diào)用此方法可以在首部后增加一個(gè)空行,表示首部?jī)?nèi)容結(jié)束(不適用于HTTP/0.9)

8.還包括其他的一些輔助函數(shù)。

需要注意的是:BaseHTTPRequestHandler是HTTP請(qǐng)求處理的基類,并不包含諸如do_GET、do_POST等方法,其他繼承該類的請(qǐng)求處理類需要自己實(shí)現(xiàn)這些方法,已完成對(duì)具體請(qǐng)求的處理。對(duì)此,可以參考SimpleHTTPServer模塊,也可查看文章Python探索之實(shí)現(xiàn)一個(gè)簡(jiǎn)單的HTTP服務(wù)器

總結(jié)

以上就是本文關(guān)于python探索之BaseHTTPServer-實(shí)現(xiàn)Web服務(wù)器介紹的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Python探索之URL Dispatcher實(shí)例詳解、Python編程之Re模塊下的函數(shù)介紹等,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • python分治法求二維數(shù)組局部峰值方法

    python分治法求二維數(shù)組局部峰值方法

    下面小編就為大家分享一篇python分治法求二維數(shù)組局部峰值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python使用ctypes庫調(diào)用DLL動(dòng)態(tài)鏈接庫

    python使用ctypes庫調(diào)用DLL動(dòng)態(tài)鏈接庫

    這篇文章主要介紹了python如何使用ctypes庫調(diào)用DLL動(dòng)態(tài)鏈接庫,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-10-10
  • Python一行代碼識(shí)別車牌號(hào)碼實(shí)現(xiàn)示例詳解

    Python一行代碼識(shí)別車牌號(hào)碼實(shí)現(xiàn)示例詳解

    這篇文章主要為大家介紹了Python一行代碼識(shí)別車牌號(hào)碼實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Flask入門之上傳文件到服務(wù)器的方法示例

    Flask入門之上傳文件到服務(wù)器的方法示例

    這篇文章主要介紹了Flask入門之上傳文件到服務(wù)器的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • python中正則表達(dá)式?: ?= ?! 的用法

    python中正則表達(dá)式?: ?= ?! 的用法

    正則表達(dá)式中使用的??:、?=?和??!?是三種不同的正則表達(dá)式語法,它們分別代表非捕獲組、正向前瞻斷言和負(fù)向前瞻斷言,下面就來介紹一下這三種的方法,感興趣的可以了解一下
    2025-04-04
  • python輸出電腦上所有的串口名的方法

    python輸出電腦上所有的串口名的方法

    今天小編就為大家分享一篇python輸出電腦上所有的串口名的方法,具有好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python 代碼實(shí)現(xiàn)各種酷炫功能

    Python 代碼實(shí)現(xiàn)各種酷炫功能

    這篇文章主要介紹了Python 代碼實(shí)現(xiàn)各種酷炫功能,生成二維碼、生成詞云、批量摳圖、文字情緒識(shí)別等功能分享,需要的小伙伴可以參考一下
    2022-03-03
  • 快速了解Python開發(fā)中的cookie及簡(jiǎn)單代碼示例

    快速了解Python開發(fā)中的cookie及簡(jiǎn)單代碼示例

    這篇文章主要介紹了快速了解Python開發(fā)中的cookie及簡(jiǎn)單代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • JMETER如何隨機(jī)請(qǐng)求參數(shù)

    JMETER如何隨機(jī)請(qǐng)求參數(shù)

    作者分享了在業(yè)務(wù)場(chǎng)景中如何優(yōu)化接口查詢的實(shí)踐經(jīng)驗(yàn),主要面臨的問題是需要隨機(jī)獲取上游查詢接口的結(jié)果,提出了兩種方案,方案一是反復(fù)查詢并隨機(jī)獲取查詢結(jié)果;方案二是查詢一次,然后隨機(jī)從查詢結(jié)果中獲取,通過實(shí)測(cè)比較,方案二的性能提升較大
    2024-10-10
  • 一文教你Python如何創(chuàng)建屬于自己的IP池

    一文教你Python如何創(chuàng)建屬于自己的IP池

    這篇文章主要為大家詳細(xì)介紹了python如何創(chuàng)建屬于自己的IP池,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定參考價(jià)值,需要的可以參考一下
    2022-04-04

最新評(píng)論

辽阳县| 柏乡县| 大埔县| 海南省| 宁陵县| 大连市| 华宁县| 金塔县| 吉首市| 奈曼旗| 会同县| 突泉县| 沂水县| 西安市| 阆中市| 城市| 宁国市| 金秀| 桑植县| 大丰市| 赤壁市| 城步| 如皋市| 团风县| 城口县| 宝坻区| 利辛县| 抚州市| 谷城县| 柳江县| 贺州市| 巫溪县| 谷城县| 商河县| 南汇区| 延吉市| 台山市| 鹤峰县| 随州市| 定远县| 太仆寺旗|