按需返回页面的http服务器、多线程服务、图片下载

按需返回页面的http服务器:

http格式:

每个HTTP请求和响应都遵循相同的格式,一个HTTP包含Header和Body两部分,其中Body是可选的。

HTTP协议是一种文本协议,所以,它的格式也非常简但

HTTP GET请求的格式:

    GET /path HTTP/1.1

    Header1: Value1

    Header2: Value2

    Header3: Value3

每个Header一行一个,换行符是\r\n。

HTTP POST请求的格式:

    POST /path HTTP/1.1

    Header1: Value1

    Header2: Value2

    Header3: Value3

    body data goes here...

当遇到连续两个\r\n时,Header部分结束,后面的数据全部是Body。

多线程服务器到此之前我们编写的都是单线程的服务器端,单线程的服务器有一个坏处就是,在多人同时访问的时候会很缓慢。例如做个试验:在单线程的服务器端调用sleep方法让线程休眠3秒钟,然后运行服务器端,接着打开几个浏览器同时进行访问,会发现第一个浏览器停顿了3秒左右,第二个浏览器停顿了6秒左右,第三个浏览器停顿了9秒左右,这样以此类推的话速度实在太慢不忍直视。所以这时候就需要用到多线程来编写多线程服务器了,多线程就能同时的进行处理访问的客户端,而且在真正的开发中也不可能会用到单线程的服务器。

图片下载:

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()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。