20200902 -
(这篇文章其实应该放在高并发、服务器性能一类的专栏下,但是暂时没有,不过后续还会研究利用C编程来进行这部分的内容,就放在这个下面)
0. 引言
之前的时候接触过高并发相关的内容,当时接触了类似epool这种编程模型,或者更高级的libev这种时间编程;但是这些都是面向服务端的内容,类似C10K这种经典问题。而对于客户端来说,虽然有很多不同语言或者不同类型的压测工具,但很少有介绍自己来编写这部分内容的。通过百度搜索也可以看到相应的结果。
也可能是搜索的关键词不对,反正从百度的搜索结果来看,基本上没有什么有效的结果。但是,直接在谷歌上搜索,是可以找到相应的博文的。所以,本篇文章从搜索得到的结果来入手,学习如何满足这部分需求。
1. 需求分析
利用python语言编写HTTP客户端,通过类似多线程/多进程,不管是什么手段,实现高并发的并发的连接来请求服务器。虽然有很多压测工具可以使用,但是这里并不是为了测试服务器的能力,而是能模拟出大量HTTP请求,而且说不定还要控制一些内部的逻辑,但是这里不进行深入探讨,只介绍如何模拟出针对某网页的高并发HTTP请求。先来列举一下自己当前能想到的改进方式。
1.1 改进方式(多线程)
如果要达到这样的高并发目的,那么必然不能使用阻塞式的通信方式,必须能够在等待时间过程中,同时能够进行其他的任务,这种需求当然可以利用多线程来实现,多个线程同时请求,并等待结果结果返回退出。
1.2 改进方式(复用TCP