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