- Mastering Concurrency in Python
- Quan Nguyen
- 255字
- 2021-06-10 19:24:09
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.
- 黑客攻防從入門到精通(實戰(zhàn)秘笈版)
- Visual Basic編程:從基礎到實踐(第2版)
- Java從入門到精通(第4版)
- Python深度學習:模型、方法與實現(xiàn)
- Mastering Git
- Illustrator CC平面設計實戰(zhàn)從入門到精通(視頻自學全彩版)
- Python入門很輕松(微課超值版)
- Illustrator CS6設計與應用任務教程
- Python商務數(shù)據(jù)分析(微課版)
- 算法設計與分析:基于C++編程語言的描述
- Flink技術內幕:架構設計與實現(xiàn)原理
- 寫給青少年的人工智能(Python版·微課視頻版)
- Kotlin語言實例精解
- 產(chǎn)品架構評估原理與方法
- Leaflet.js Essentials