요청-시간 초과 처리
요청하는 URL에 시간 초과를 쉽게 추가 할 수 있습니다. 따라서 타사 URL을 사용하고 응답을 기다리고 있습니다. URL이 시간 범위 내에 응답 또는 오류로 응답하기를 원할 수 있으므로 항상 URL에 시간 제한을 지정하는 것이 좋습니다. 그렇게하지 않으면 해당 요청을 무기한 대기하게 될 수 있습니다.
타임 아웃 매개 변수를 사용하여 URL에 타임 아웃을 줄 수 있으며 값은 아래 예제와 같이 초 단위로 전달됩니다.
예
import requests
getdata =
requests.get('https://jsonplaceholder.typicode.com/users',timeout=0.001)
print(getdata.text)
산출
raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout:
HTTPSConnectionPool(host='jsonplaceholder.typicode.com',
port=443): Max retries exceeded with url: /users (Caused
by Connect
TimeoutError(<urllib3.connection.VerifiedHTTPSConnection object at
0x000000B02AD
E76A0>, 'Connection to jsonplaceholder.typicode.com timed out. (connect
timeout = 0.001)'))
주어진 시간 제한은 다음과 같습니다.
getdata =
requests.get('https://jsonplaceholder.typicode.com/users',timeout=0.001)
실행시 출력에 표시된대로 연결 시간 초과 오류가 발생합니다. 주어진 시간 제한은 0.001이며 요청이 응답을 다시받을 수 없으며 오류가 발생합니다. 이제 타임 아웃을 늘리고 확인하겠습니다.
예
import requests
getdata =
requests.get('https://jsonplaceholder.typicode.com/users',timeout=1.000)
print(getdata.text)
산출
E:\prequests>python makeRequest.py
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "[email protected]",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
}
]
시간 제한이 1 초이면 요청 된 URL에 대한 응답을 얻을 수 있습니다.