요청-시간 초과 처리

요청하는 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에 대한 응답을 얻을 수 있습니다.