CẬP NHẬT: https://requests.readthedocs.io/en/master/user/advified/#timeouts
Trong phiên bản mới của requests
:
Nếu bạn chỉ định một giá trị cho thời gian chờ, như thế này:
r = requests.get('https://github.com', timeout=5)
Giá trị thời gian chờ sẽ được áp dụng cho cả thời gian chờ connect
và read
thời gian chờ. Chỉ định một tuple nếu bạn muốn đặt các giá trị riêng biệt:
r = requests.get('https://github.com', timeout=(3.05, 27))
Nếu máy chủ từ xa rất chậm, bạn có thể yêu cầu Yêu cầu chờ phản hồi mãi mãi, bằng cách chuyển Không có giá trị hết thời gian chờ và sau đó lấy một tách cà phê.
r = requests.get('https://github.com', timeout=None)
Câu trả lời cũ (có lẽ đã lỗi thời) của tôi (đã được đăng từ lâu):
Có nhiều cách khác để khắc phục vấn đề này:
1. Sử dụng TimeoutSauce
lớp nội bộ
Từ: https://github.com/kennethreitz/requests/issues/1928#issuecomment-35811896
import requests from requests.adapters import TimeoutSauce
class MyTimeout(TimeoutSauce):
def __init__(self, *args, **kwargs):
connect = kwargs.get('connect', 5)
read = kwargs.get('read', connect)
super(MyTimeout, self).__init__(connect=connect, read=read)
requests.adapters.TimeoutSauce = MyTimeout
Mã này sẽ khiến chúng tôi đặt thời gian chờ đọc bằng với thời gian chờ kết nối, là giá trị hết thời gian bạn chuyển qua cuộc gọi Session.get () của bạn. (Lưu ý rằng tôi chưa thực sự kiểm tra mã này, vì vậy nó có thể cần gỡ lỗi nhanh, tôi chỉ cần viết thẳng vào cửa sổ GitHub.)
2. Sử dụng một nhánh yêu cầu từ kevinburke: https://github.com/kevinburke/requests/tree/connect-timeout
Từ tài liệu của nó: https://github.com/kevinburke/requests/blob/connect-timeout/docs/user/advified.rst
Nếu bạn chỉ định một giá trị cho thời gian chờ, như thế này:
r = requests.get('https://github.com', timeout=5)
Giá trị thời gian chờ sẽ được áp dụng cho cả thời gian chờ kết nối và thời gian đọc. Chỉ định một tuple nếu bạn muốn đặt các giá trị riêng biệt:
r = requests.get('https://github.com', timeout=(3.05, 27))
kevinburke đã yêu cầu sáp nhập vào dự án yêu cầu chính, nhưng nó chưa được chấp nhận.