İstekler - Zaman Aşımlarını İşleme

Zaman aşımları, istediğiniz URL'ye kolayca eklenebilir. Öyle oluyor ki, üçüncü taraf bir URL kullanıyorsunuz ve bir yanıt bekliyorsunuz. URL'nin bir zaman aralığı içinde bir yanıt veya bir hata ile yanıt vermesini isteyebileceğimiz için, URL'ye zaman aşımı vermek her zaman iyi bir uygulamadır. Bunu yapmamak, bu isteği sonsuza kadar beklemeye neden olabilir.

Zaman aşımı parametresini kullanarak URL'ye zaman aşımı verebiliriz ve aşağıdaki örnekte gösterildiği gibi değer saniye cinsinden geçirilir -

Misal

import requests
getdata = 
requests.get('https://jsonplaceholder.typicode.com/users',timeout=0.001)
print(getdata.text)

Çıktı

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)'))

Verilen zaman aşımı aşağıdaki gibidir -

getdata = 
requests.get('https://jsonplaceholder.typicode.com/users',timeout=0.001)

Yürütme, çıktıda gösterildiği gibi bağlantı zaman aşımı hatasını atar. Verilen zaman aşımı 0.001'dir, bu istek yanıtı geri almak için mümkün değildir ve bir hata verir. Şimdi, zaman aşımını artırıp kontrol edeceğiz.

Misal

import requests
getdata = 
requests.get('https://jsonplaceholder.typicode.com/users',timeout=1.000)
print(getdata.text)

Çıktı

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 saniyelik bir zaman aşımı ile talep edilen URL'nin cevabını alabiliriz.