進(jìn)行 tcp 協(xié)議的接口測試 首先要了解tcp協(xié)議 以及可以使用python實現(xiàn)tcp協(xié)議如果之前沒有掌握 可以查看我的另一篇文章http://www.itdecent.cn/p/367a00db6217?
我使用的是gevent庫 雖然現(xiàn)在asynio異步庫出現(xiàn) 但是 有點晦澀難懂 所以我使用的是gevent庫來實現(xiàn)并發(fā)
# 這是我寫代碼?
import geventfrom geventimport monkey; monkey.patch_all()
import socket
def test1(num):
? ? ? test = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
? ? ? test.connect(('115.29.177.5', 7000))
? ? ? test.send(('{"st":"HB"}$_header_${"code":-3507,"msg":"%d"}$_package_$'%num).encode('utf-8'))? # 這段代碼是發(fā)送給服務(wù)器的信息
? ? ? server_data = test.recv(1024)
? ? ? print('the server respond', server_data.decode('utf-8'))
a = [gevent.spawn(test1, i)for i in range(10001)]? # 使用列表推導(dǎo)式
print(a)
gevent.joinall(a)
我們用test1的函數(shù)來封裝我們所需要 的tcp請求
('115.29.177.4', 7000)? 這個元組 代表著? 服務(wù)器的ip地址和端口號
gevent.spawn(test1, 參數(shù))? 我們可以把這段代碼理解為? ?并發(fā)的準(zhǔn)備? 來為了 1s中實現(xiàn)1w個異步請求
然后我創(chuàng)建了一個 列表為a? ?使用列表推導(dǎo)式 來進(jìn)行 10000個并發(fā)的準(zhǔn)備
gevent.joinall(a)? 這段代碼來執(zhí)行所有準(zhǔn)備的請求