Thông báo lỗi phản hồi yêu cầu python

Mục đích của cẩm nang này🏁 là chia sẻ một mẫu cá nhân để xử lý ngoại lệ của mô-đun yêu cầu Python

điều đầu tiên đầu tiên. điều chưa đủ nhấn mạnh là nếu bạn muốn đưa ra một ngoại lệ cho các lỗi trạng thái HTTP 4xx/5xx, bạn cần có phương thức

Riêng HTTPError không bắt được 4xx/5xx [e. g. cũng như lỗi xác thực, sự cố ngừng hoạt động của máy chủ quay trở lại với 5xx, v.v. ]

Chương này sẽ thảo luận về cách xử lý các lỗi xảy ra khi làm việc với thư viện yêu cầu Http. Luôn luôn là một thực hành tốt để quản lý lỗi cho tất cả các trường hợp có thể xảy ra

Ngoại lệ lỗi

Mô-đun yêu cầu cung cấp các loại ngoại lệ lỗi sau -

ConnectionError - Điều này sẽ được nâng lên, nếu có bất kỳ lỗi kết nối nào. Ví dụ mạng bị lỗi, lỗi DNS thì thư viện Request sẽ tăng ngoại lệ ConnectionError

Phản ứng. raise_for_status[] − Dựa trên mã trạng thái i. e. 401, 404, nó sẽ tăng HTTPError cho url được yêu cầu

HTTPError - Lỗi này sẽ xuất hiện khi có phản hồi không hợp lệ đối với yêu cầu được thực hiện

Hết thời gian - Lỗi tăng lên khi hết thời gian cho URL được yêu cầu

TooManyRedirects - Nếu vượt quá giới hạn cho các chuyển hướng tối đa thì nó sẽ gây ra lỗi TooManyRedirects

Mã nguồn cho các yêu cầu. ngoại lệ

"""
requests.exceptions
~~~~~~~~~~~~~~~~~~~

This module contains the set of Requests' exceptions.
"""
from urllib3.exceptions import HTTPError as BaseHTTPError

from .compat import JSONDecodeError as CompatJSONDecodeError


[docs]class RequestException[IOError]: """There was an ambiguous exception that occurred while handling your request. """ def __init__[self, *args, **kwargs]: """Initialize RequestException with `request` and `response` objects.""" response = kwargs.pop["response", None] self.response = response self.request = kwargs.pop["request", None] if response is not None and not self.request and hasattr[response, "request"]: self.request = self.response.request super[].__init__[*args, **kwargs]

class InvalidJSONError[RequestException]: """A JSON error occurred."""

[docs]class JSONDecodeError[InvalidJSONError, CompatJSONDecodeError]: """Couldn't decode the text into json""" def __init__[self, *args, **kwargs]: """ Construct the JSONDecodeError instance first with all args. Then use it's args to construct the IOError so that the json specific args aren't used as IOError specific args and the error message from JSONDecodeError is preserved. """ CompatJSONDecodeError.__init__[self, *args] InvalidJSONError.__init__[self, *self.args, **kwargs]

[docs]class HTTPError[RequestException]: """An HTTP error occurred."""

[docs]class ConnectionError[RequestException]: """A Connection error occurred."""

class ProxyError[ConnectionError]: """A proxy error occurred.""" class SSLError[ConnectionError]: """An SSL error occurred."""

[docs]class Timeout[RequestException]: """The request timed out. Catching this error will catch both :exc:`~requests.exceptions.ConnectTimeout` and :exc:`~requests.exceptions.ReadTimeout` errors. """

[docs]class ConnectTimeout[ConnectionError, Timeout]: """The request timed out while trying to connect to the remote server. Requests that produced this error are safe to retry. """

[docs]class ReadTimeout[Timeout]: """The server did not send any data in the allotted amount of time."""

[docs]class URLRequired[RequestException]: """A valid URL is required to make a request."""

[docs]class TooManyRedirects[RequestException]: """Too many redirects."""

class MissingSchema[RequestException, ValueError]: """The URL scheme [e.g. http or https] is missing.""" class InvalidSchema[RequestException, ValueError]: """The URL scheme provided is either invalid or unsupported.""" class InvalidURL[RequestException, ValueError]: """The URL provided was somehow invalid.""" class InvalidHeader[RequestException, ValueError]: """The header value provided was somehow invalid.""" class InvalidProxyURL[InvalidURL]: """The proxy URL provided is invalid.""" class ChunkedEncodingError[RequestException]: """The server declared chunked encoding but sent an invalid chunk.""" class ContentDecodingError[RequestException, BaseHTTPError]: """Failed to decode response content.""" class StreamConsumedError[RequestException, TypeError]: """The content for this response was already consumed.""" class RetryError[RequestException]: """Custom retries logic failed""" class UnrewindableBodyError[RequestException]: """Requests encountered an error when trying to rewind a body.""" # Warnings class RequestsWarning[Warning]: """Base warning for Requests.""" class FileModeWarning[RequestsWarning, DeprecationWarning]: """A file was opened in text mode, but Requests determined its binary length.""" class RequestsDependencyWarning[RequestsWarning]: """An imported dependency doesn't match the expected version range."""

Làm cách nào để nhận thông báo lỗi từ phản hồi HTTP trong Python?

Cung cấp nội dung phản hồi từ máy chủ HTTP khi trả về Lỗi HTTP. Khi chúng tôi sử dụng urllib. yêu cầu. urlopen để đọc dữ liệu từ máy chủ HTTP và gặp lỗi, quá trình theo dõi lỗi chỉ hiển thị mã trạng thái phản hồi HTTP và mô tả của mã trạng thái, . g. Lỗi HTTP. Lỗi HTTP 400. Yêu cầu không hợp lệ.

Python xử lý lỗi 429 như thế nào?

Cách đơn giản nhất để khắc phục lỗi HTTP 429 là đợi gửi yêu cầu khác . Thông thường, mã trạng thái này được gửi với tiêu đề "Thử lại sau" chỉ định một khoảng thời gian chờ trước khi gửi một yêu cầu khác.

Các yêu cầu Python có bị phản đối không?

Khi chúng ta bước vào năm thứ ba của Python 2. 7 sắp hết hạn sử dụng, Các yêu cầu đã quyết định đã đến lúc bắt đầu ngừng hỗ trợ của chúng tôi . Mặc dù chúng tôi vẫn chưa xác nhận ngày, nhưng chúng tôi muốn đưa ra thông báo sớm rằng điều này sẽ đến vào một thời điểm nào đó trong năm 2022.

Nội dung phản hồi trong Python là gì?

Các yêu cầu Python thường được sử dụng để tìm nạp nội dung từ một URI tài nguyên cụ thể. Bất cứ khi nào chúng tôi yêu cầu một URI được chỉ định thông qua Python, nó sẽ trả về một đối tượng phản hồi. Bây giờ, đối tượng phản hồi này sẽ được sử dụng để truy cập một số tính năng như nội dung, tiêu đề, v.v. .

Chủ Đề