Python HTTP requests - The first sight
Python http library requests 是個簡單直覺又普及的library,即便如此他也提供進階的use cases.
hooks
可以預先自行調整,決定request處理的項目或事件。通常搭配callback function,例如回傳時印出url, 可以先建立一個
def print_url(r, *args, **kwargs):
print(r.url)
Call 的時候放在hooks 這dictionary中,就會在request後,接著執行到print_url這個function
>>> requests.get('https://httpbin.org/', hooks={'response': print_url})
實際上hook的概念並非Python獨有,hook function 像是一個interface讓開發者去複寫,客製化自己要的操作。
timeouts
自定義timeout 時間來確保回應的時間是符合自己預期,但每次都自己加參數容易忘記。
requests.get('https://google.com/', timeout=0.001)
Retry
可以利用 HTTPAdapter (request.adapters) 跟Retry (requests.packages.urllib3.util.retry) 去搭配,不僅可以定義max retry的次數,也能只針對return code以及method的型態來做失敗時的retry
retry_strategy = Retry(
total=3,
status_forcelist=[429, 500, 502, 503, 504],
method_whitelist=["HEAD", "GET", "OPTIONS"]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
http = requests.Session()
http.mount("https://", adapter)
response = http.get("https://trendmicro.com")
留言
張貼留言