# -*- coding:utf-8 -*-
import requests
import datetime
import time
import threading
'''
allow_redirects = False禁止重定向,添加在request参数后
get请求用params传参
post请求,数据类型form,用data传参
post请求,数据类型form,用data传参
post请求,数据类型json,json传参
timeout:请求超时时间,添加在request参数后
nub = 10#设置并发线程数
ResponseTime=float(result.elapsed.microseconds)/1000 #获取响应时间,单位ms
ThinkTime = 0.5#设置思考时间
AverageTime = "{:.3f}".format(float(sum(myrequest.times))/float(len(myrequest.times)))#计算数组的平均值,保留3位小数
totaltime = float(hour)*60*60 + float(minute)*60 + float(second) #计算总的思考时间+请求时间
'''
class url_request:
times = []
error = []
def weather_DC( self ):
myrequest = url_request()
weatherinfo_search = 'https://restapi.amap.com/v3/weather/weatherInfo?parameters'
params = { 'key' : 'cd1b11e80ffac05253196aa2a1233f25' ,
'city' : 110101 ,
'extensions' : 'base' ,
'output' : 'JSON' }
result = requests.get(url = weatherinfo_search, params = params)
print ( "状态码:" ,result.status_code)
print ( "返回报文:" ,result.text)
ResponseTime = float (result.elapsed.microseconds) / 1000
myrequest.times.append(ResponseTime)
if result.status_code ! = 200 :
myrequest.error.append( "0" )
if __name__ = = '__main__' :
myrequest = url_request()
threads = []
starttime = datetime.datetime.now()
print ( "请求开始时间:request start time %s" % starttime)
nub = 10
ThinkTime = 0.5
for i in range ( 1 , nub + 1 ):
t = threading.Thread(target = myrequest.weather_DC())
threads.append(t)
for t in threads:
time.sleep(ThinkTime)
print ( "线程数:thread %s" % t)
t.setDaemon( True )
t.start()
t.join()
endtime = datetime.datetime.now()
print ( "请求结束时间:request end time %s" % endtime)
time.sleep( 3 )
AverageTime = "{:.3f}" . format ( float ( sum (myrequest.times)) / float ( len (myrequest.times)))
print ( "平均响应时间:Average Response Time %s ms" % AverageTime)
usetime = str (endtime - starttime)
hour = usetime.split( ':' ).pop( 0 )
minute = usetime.split( ':' ).pop( 1 )
second = usetime.split( ':' ).pop( 2 )
totaltime = float (hour) * 60 * 60 + float (minute) * 60 + float (second)
print ( "并发数:Concurrent processing %s" % nub)
print ( "#总共消耗的时间:use total time %s s" % (totaltime - float (nub * ThinkTime)))
print ( "错误请求数:fail request %s s" % myrequest.error.count( "0" ))
|