按需返回頁(yè)面的http服務(wù)器、多線程服務(wù)、圖片下載

按需返回頁(yè)面的http服務(wù)器:

http格式:

每個(gè)HTTP請(qǐng)求和響應(yīng)都遵循相同的格式,一個(gè)HTTP包含Header和Body兩部分,其中Body是可選的。

HTTP協(xié)議是一種文本協(xié)議,所以,它的格式也非常簡(jiǎn)但

HTTP GET請(qǐng)求的格式:

? ? GET /path HTTP/1.1

? ? Header1: Value1

? ? Header2: Value2

? ? Header3: Value3

每個(gè)Header一行一個(gè),換行符是\r\n。

HTTP POST請(qǐng)求的格式:

? ? POST /path HTTP/1.1

? ? Header1: Value1

? ? Header2: Value2

? ? Header3: Value3

? ? body data goes here...

當(dāng)遇到連續(xù)兩個(gè)\r\n時(shí),Header部分結(jié)束,后面的數(shù)據(jù)全部是Body。

多線程服務(wù)器到此之前我們編寫的都是單線程的服務(wù)器端,單線程的服務(wù)器有一個(gè)壞處就是,在多人同時(shí)訪問(wèn)的時(shí)候會(huì)很緩慢。例如做個(gè)試驗(yàn):在單線程的服務(wù)器端調(diào)用sleep方法讓線程休眠3秒鐘,然后運(yùn)行服務(wù)器端,接著打開幾個(gè)瀏覽器同時(shí)進(jìn)行訪問(wèn),會(huì)發(fā)現(xiàn)第一個(gè)瀏覽器停頓了3秒左右,第二個(gè)瀏覽器停頓了6秒左右,第三個(gè)瀏覽器停頓了9秒左右,這樣以此類推的話速度實(shí)在太慢不忍直視。所以這時(shí)候就需要用到多線程來(lái)編寫多線程服務(wù)器了,多線程就能同時(shí)的進(jìn)行處理訪問(wèn)的客戶端,而且在真正的開發(fā)中也不可能會(huì)用到單線程的服務(wù)器。

圖片下載:

import urllib.request

def main():

req = urllib.request.urlopen("https://rpic.douyucdn.cn/asrpic/191118/520_0058.png")

img_content = req.read()

with open('1.jpg','wb') as f:

f.write(img_content)

if __name__ == "__main__":

main()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容