How to benchmark a HTTP connection with requests module?

Etienne Robillard tkadm30 at yandex.com
Fri Feb 16 06:22:04 EST 2018


Hi Dennis,

Nice pseudo code! :-)

Is it possible benchmark/measure the latency of a HTTP connection for 
each threads by timing the duration of the requests.get method to complete?

I also plan to test with gevent.monkey extension for enabling 
cooperative multithreading support:

from gevent import monkey

monkey.patch_all()


Etienne

Le 2018-02-15 à 11:56, Dennis Lee Bieber a écrit :
>
> 	Keyword: threads
>
> 	Create a number of threads, each handling one request, and use a global
> flag to start them. And maybe a queue to retrieve
>
> Pseudo-code (I haven't checked the manual for correct API):
>
> hold = True
> resultQ = Queue.Queue()
>
> def worker(ID):
> 	while hold: pass
> 	r = requests.get(...)
> 	resultQ.put( (ID, r.status_code) )
>
>
> def benchmark():
> 	requestTasks = [ threading.thread( worker, args=(ID) )
> 					for ID in range(NUMBEROFREQUESTS) ]
> 	for rT in requestTasks.start()	#or is it .run()
>
> 	#workers are now busy waiting for hold to False
> 	#better would be to use threading.Condition and .notifyAll()
> 	#having each thread wait on a global condition variable,
> 	#rather than spinning on a busy wait
> 	hold = False
>
> 	for _ in range(NUMBEROFREQUESTS):
> 		(ID, code) = resultQ.get()
> 		requestTasks[ID].join()
>
> 		#put any asserts here

-- 
Etienne Robillard
tkadm30 at yandex.com
https://www.isotopesoftware.ca/




More information about the Python-list mailing list