Tăng lỗi thời gian chờ python

Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng thời gian chờ trong thư viện yêu cầu Python, khi làm việc với bất kỳ loại yêu cầu HTTP nào được thực hiện. Theo mặc định, thư viện requests sẽ không hết thời gian cho bất kỳ yêu cầu nào bạn thực hiện, điều này có thể khiến chương trình của bạn chạy vô thời hạn nếu máy chủ không phản hồi

Đến cuối hướng dẫn này, bạn sẽ học được

  • Cách đặt thời gian chờ trong yêu cầu
  • Cách đặt thời gian chờ duy nhất để kết nối và đọc trong các yêu cầu Python
  • Cách nắm bắt và xử lý lỗi hết thời gian chờ trong yêu cầu Python

Mục lục

Các yêu cầu Python xử lý thời gian chờ như thế nào?

Theo mặc định, thư viện yêu cầu Python không đặt thời gian chờ cho bất kỳ yêu cầu nào nó gửi. Điều này đúng với các yêu cầu GET, POSTPUT. Mặc dù điều này có thể ngăn các lỗi không mong muốn, nhưng nó có thể khiến yêu cầu của bạn chạy vô thời hạn

Do đó, điều quan trọng là đặt thời gian chờ để ngăn hành vi không mong muốn. Hãy nhớ rằng, thư viện Python requests sẽ không hết thời gian chờ theo mặc định, trừ khi được hướng dẫn rõ ràng

Cách đặt thời gian chờ cho các yêu cầu Python

Để đặt thời gian chờ trong yêu cầu HTTP được thực hiện qua thư viện requests, bạn có thể sử dụng tham số

# Setting a Timeout on a GET Request with a Floating Point Value
import requests
resp = requests.get('https://datagy.io', timeout=3.5)
1. Tham số chấp nhận giá trị số nguyên hoặc dấu phẩy động, mô tả thời gian tính bằng giây

Điều quan trọng cần lưu ý là hành vi này khác với nhiều thư viện yêu cầu HTTP khác, chẳng hạn như trong JavaScript. Trong các thư viện hoặc ngôn ngữ khác, hành vi này có xu hướng được thể hiện bằng mili giây

Hãy xem một ví dụ về cách chúng tôi có thể gửi yêu cầu

# Setting a Timeout on a GET Request with a Floating Point Value
import requests
resp = requests.get('https://datagy.io', timeout=3.5)
2 với thời gian chờ

# Setting a Timeout on a GET Request with an Integer
import requests
resp = requests.get('https://datagy.io', timeout=3)

Trong ví dụ trên, chúng tôi đặt thời gian chờ là 3 giây. Chúng tôi đã sử dụng một số nguyên để biểu thị thời gian hết hạn. Nếu chúng ta muốn chính xác hơn, chúng ta cũng có thể chuyển vào một giá trị dấu phẩy động

# Setting a Timeout on a GET Request with a Floating Point Value
import requests
resp = requests.get('https://datagy.io', timeout=3.5)

Bằng cách chuyển vào một giá trị duy nhất, chúng tôi đặt thời gian chờ cho yêu cầu. Nếu chúng tôi muốn đặt thời gian chờ khác nhau để kết nối và đọc yêu cầu, chúng tôi có thể chuyển vào một bộ giá trị

Cách đặt thời gian chờ để kết nối và đọc các yêu cầu trong Python

Trong một số trường hợp, bạn sẽ muốn đặt thời gian chờ khác nhau để tạo kết nối và đọc kết quả. Điều này có thể dễ dàng thực hiện bằng cách sử dụng tham số

# Setting a Timeout on a GET Request with a Floating Point Value
import requests
resp = requests.get('https://datagy.io', timeout=3.5)
1 trong thư viện requests. Tương tự như ví dụ trên, điều này có thể được áp dụng cho bất kỳ loại yêu cầu nào được đưa ra

Hãy xem cách chúng ta có thể vượt qua các giới hạn thời gian chờ khác nhau để kết nối và đọc các yêu cầu trong thư viện requests của Python

# Setting Different Timeouts for Connecting and Reading Requests
import requests
resp = requests.get('https://datagy.io', timeout=(1, 2))

Trong ví dụ trên, chúng tôi đặt yêu cầu thành thời gian chờ sau 1 giây để kết nối và 2 giây để đọc yêu cầu

Trong phần sau, bạn sẽ tìm hiểu cách nắm bắt và xử lý các lỗi phát sinh do yêu cầu hết thời gian chờ

Cách bắt và xử lý lỗi hết thời gian chờ trong yêu cầu Python

Khi áp dụng thời gian chờ, điều quan trọng cần lưu ý là đây không phải là giới hạn thời gian cho toàn bộ phản hồi. Thay vào đó, nó đưa ra một ngoại lệ nếu không có byte nào được nhận trên ổ cắm bên dưới

Nếu yêu cầu không nhận được bất kỳ byte nào trong giới hạn

# Setting a Timeout on a GET Request with a Floating Point Value
import requests
resp = requests.get('https://datagy.io', timeout=3.5)
1 đã chỉ định, lỗi
# Setting a Timeout on a GET Request with a Floating Point Value
import requests
resp = requests.get('https://datagy.io', timeout=3.5)
7 sẽ xuất hiện. Hãy xem nó trông như thế nào

________số 8_______

Để ngăn chương trình của bạn bị treo, bạn cần xử lý ngoại lệ bằng cách sử dụng khối

# Setting a Timeout on a GET Request with a Floating Point Value
import requests
resp = requests.get('https://datagy.io', timeout=3.5)
8. Hãy xem làm thế nào điều này có thể được thực hiện

# Handling a Timeout Error
import requests
from requests.exceptions import ConnectTimeout

try:
    requests.get('https://datagy.io', timeout=0.0001)
except ConnectTimeout:
    print('Request has timed out')

# Returns:
# Request has timed out

Chúng ta có thể thấy trong đoạn mã trên rằng lỗi đã được xử lý an toàn. Để làm được điều này, chúng tôi

  1. Đã nhập lỗi từ mô-đun ngoại lệ của thư viện requests
  2. Chúng tôi đã tạo một khối
    # Setting a Timeout on a GET Request with a Floating Point Value
    import requests
    resp = requests.get('https://datagy.io', timeout=3.5)
    8 để xử lý lỗi
    # Setting Different Timeouts for Connecting and Reading Requests
    import requests
    resp = requests.get('https://datagy.io', timeout=(1, 2))
    1

Các câu hỏi thường gặp

Thời gian chờ mặc định cho các yêu cầu Python là gì?

Không có. Không có thời gian chờ mặc định cho các yêu cầu Python, trừ khi được đặt rõ ràng bằng tham số

# Setting a Timeout on a GET Request with a Floating Point Value
import requests
resp = requests.get('https://datagy.io', timeout=3.5)
1

Làm cách nào để bạn đặt thời gian chờ cho các yêu cầu được thực hiện bằng Python?

Bạn đặt thời gian chờ (tính bằng giây) bằng cách sử dụng tham số

# Setting Different Timeouts for Connecting and Reading Requests
import requests
resp = requests.get('https://datagy.io', timeout=(1, 2))
3 khi thực hiện các yêu cầu HTTP trong thư viện yêu cầu Python

Đâu là thời điểm tốt nhất để đặt thời gian chờ cho các yêu cầu được thực hiện bằng Python?

Mặc dù không có giá trị thiết lập tốt nhất cho thời gian chờ cho các yêu cầu HTTP được thực hiện bằng Python, nhưng một phương pháp hay là đặt chúng dưới 500 mili giây. Điều này cho phép ứng dụng của bạn cung cấp trải nghiệm người dùng tốt hơn và xử lý nhiều yêu cầu hơn

Phần kết luận

Trong hướng dẫn này, bạn đã học cách xử lý thời gian chờ trong thư viện requests của Python. Lần đầu tiên bạn tìm hiểu cách thư viện Python requests xử lý thời gian chờ. Sau đó, bạn đã học cách đặt thời gian chờ khi thực hiện các yêu cầu HTTP, cả bằng cách sử dụng số nguyên và giá trị dấu phẩy động. Sau đó, bạn đã học cách chỉ định thời gian chờ cụ thể để kết nối và đọc các yêu cầu. Cuối cùng, bạn đã học cách xử lý các trường hợp ngoại lệ hết thời gian chờ trong thư viện Python requests