官术网_书友最值得收藏!

Support from httpstat.us and simulation in Python

In addition to different options for status codes, the httpstat.us website additionally provides a way to simulate a delay in its response when we send in requests. Specifically, we can customize the delay time (in milliseconds) with a query argument in our GET request. For example, httpstat.us/200?sleep=5000 will return a response after five seconds of delay.

Now, let us see how a delay like this would affect the execution of our program. Consider the Chapter05/example5.py file, which contains the current request logic of our ping test application but has a different URL list:

# Chapter05/example5.py

import threading
import requests

class MyThread(threading.Thread):
def __init__(self, url):
threading.Thread.__init__(self)
self.url = url
self.result = None

def run(self):
res = requests.get(self.url)
self.result = f'{self.url}: {res.text}'

urls = [
'http://httpstat.us/200',
'http://httpstat.us/200?sleep=20000',
'http://httpstat.us/400'
]

threads = [MyThread(url) for url in urls]
for thread in threads:
thread.start()
for thread in threads:
thread.join()
for thread in threads:
print(thread.result)

print('Done.')

Here we have a URL that will take around 20 seconds to return a response. Considering that we will block the main program until all threads finish their execution (with the join() method), our program will most likely appear to be hanging for 20 seconds before any response is printed out.

Run the program to experience this for yourself. A 20 second delay will occur (which will make the execution take significantly longer to finish) and we will obtain the following output:

http://httpstat.us/200: 200 OK
http://httpstat.us/200?sleep=20000: 200 OK
http://httpstat.us/400: 400 Bad Request
Took 22.60 seconds
Done.
主站蜘蛛池模板: 浪卡子县| 句容市| 安康市| 铜川市| 温泉县| 屏东市| 黄平县| 广宁县| 金门县| 南京市| 车致| 宝鸡市| 会昌县| 新巴尔虎右旗| 南康市| 本溪市| 大新县| 莱阳市| 定日县| 嫩江县| 中江县| 甘肃省| 馆陶县| 成都市| 镇雄县| 高碑店市| 滕州市| 宁晋县| 连南| 永春县| 宕昌县| 土默特右旗| 板桥市| 呼伦贝尔市| 福安市| 罗定市| 锦屏县| 乐山市| 久治县| 务川| 聂荣县|