Bỏ để qua phần nội dung

Tài liệu tham khảo cho hub_sdk/helpers/error_handler.py

Ghi

Tệp này có sẵn tại https://github.com/ultralytics/hub-sdk/blob/main/hub_sdk/helpers/error_handler.py. Nếu bạn phát hiện ra một vấn đề, vui lòng giúp khắc phục nó bằng cách đóng góp Yêu cầu 🛠️ kéo. Cảm ơn bạn 🙏 !



hub_sdk.helpers.error_handler.ErrorHandler

Đại diện cho một trình xử lý lỗi để quản lý mã trạng thái HTTP và thông báo lỗi.

Thuộc tính:

Tên Kiểu Sự miêu tả
status_code int

Mã trạng thái HTTP liên quan đến lỗi.

message (str, None)

Thông báo lỗi tùy chọn cung cấp thêm chi tiết. Mặc định là Không có.

headers (dict, None)

Một từ điển tùy chọn cung cấp chi tiết tiêu đề phản hồi. Mặc định là Không có.

Mã nguồn trong hub_sdk/helpers/error_handler.py
class ErrorHandler:
    """
    Represents an error handler for managing HTTP status codes and error messages.

    Attributes:
        status_code (int): The HTTP status code associated with the error.
        message (str, None): An optional error message providing additional details.
            Defaults to None.
        headers (dict, None): An optional dictionary providing response headers details.
            Defaults to None.
    """

    def __init__(
        self,
        status_code: int,
        message: Optional[str] = None,
        headers: Optional[dict] = None,
    ):
        """
        Initialize the ErrorHandler object with a given status code.

        Args:
            status_code (int): The HTTP status code representing the error.
            message (str, optional): An optional error message providing additional details.
            headers (dict, None): An optional dictionary providing response headers details.
        """
        self.status_code = status_code
        self.message = message
        self.headers = headers

    def handle(self) -> str:
        """
        Handle the error based on the provided status code.

        Returns:
            (str): A message describing the error.
        """
        error_handlers = {
            401: self.handle_unauthorized,
            404: self.handle_not_found,
            500: self.handle_internal_server_error,
            429: self.handle_ratelimit_exceeded,
        }

        handler = error_handlers.get(self.status_code, self.get_default_message)
        return handler()

    @staticmethod
    def handle_unauthorized() -> str:
        """
        Handle an unauthorized error (HTTP 401).

        Returns:
            (str): An error message indicating unauthorized access.
        """
        return "Unauthorized: Please check your credentials."

    def handle_ratelimit_exceeded(self) -> str:
        """
        Handle rate limit exceeded error (HTTP 429).

        Returns:
            (str): An error message indicating rate limit exceeded.
        """
        error_msg = "Rate Limits Exceeded: Please try again later."

        if "X-RateLimit-Reset" in self.headers:
            rate_reset = self.headers.get("X-RateLimit-Reset")

            try:
                reset_time = datetime.datetime.fromtimestamp(int(rate_reset)).strftime("%Y-%m-%d %H:%M:%S")
            except ValueError:
                reset_time = "unknown"

            error_msg = (
                "You have exceeded the rate limits for this request. "
                f"You will be able to make requests again after {reset_time}."
            )
        return error_msg

    @staticmethod
    def handle_not_found() -> str:
        """
        Handle a resource not found error (HTTP 404).

        Returns:
            (str): An error message indicating that the requested resource was not found.
        """
        return "Resource not found."

    @staticmethod
    def handle_internal_server_error() -> str:
        """
        Handle an internal server error (HTTP 500).

        Returns:
            (str): An error message indicating an internal server error.
        """
        return "Internal server error."

    @staticmethod
    def handle_unknown_error() -> str:
        """
        Handle an unknown error.

        Returns:
            (str): An error message indicating that an unknown error occurred.
        """
        return "Unknown error occurred."

    def get_default_message(self) -> str:
        """
        Get the default error message for a given HTTP status code.

        Returns:
            (str): The default error message associated with the provided status code.
                 If no message is found, it falls back to handling an unknown error.
        """
        return http.client.responses.get(self.status_code, self.handle_unknown_error())

__init__(status_code, message=None, headers=None)

Khởi tạo đối tượng ErrorHandler với một mã trạng thái đã cho.

Thông số:

Tên Kiểu Sự miêu tả Mặc định
status_code int

Mã trạng thái HTTP đại diện cho lỗi.

bắt buộc
message str

Thông báo lỗi tùy chọn cung cấp thêm chi tiết.

None
headers (dict, None)

Một từ điển tùy chọn cung cấp chi tiết tiêu đề phản hồi.

None
Mã nguồn trong hub_sdk/helpers/error_handler.py
def __init__(
    self,
    status_code: int,
    message: Optional[str] = None,
    headers: Optional[dict] = None,
):
    """
    Initialize the ErrorHandler object with a given status code.

    Args:
        status_code (int): The HTTP status code representing the error.
        message (str, optional): An optional error message providing additional details.
        headers (dict, None): An optional dictionary providing response headers details.
    """
    self.status_code = status_code
    self.message = message
    self.headers = headers

get_default_message()

Nhận thông báo lỗi mặc định cho một mã trạng thái HTTP nhất định.

Trở lại:

Kiểu Sự miêu tả
str

Thông báo lỗi mặc định được liên kết với mã trạng thái được cung cấp. Nếu không tìm thấy thông báo nào, nó sẽ quay trở lại xử lý một lỗi không xác định.

Mã nguồn trong hub_sdk/helpers/error_handler.py
def get_default_message(self) -> str:
    """
    Get the default error message for a given HTTP status code.

    Returns:
        (str): The default error message associated with the provided status code.
             If no message is found, it falls back to handling an unknown error.
    """
    return http.client.responses.get(self.status_code, self.handle_unknown_error())

handle()

Xử lý lỗi dựa trên mã trạng thái được cung cấp.

Trở lại:

Kiểu Sự miêu tả
str

Một thông báo mô tả lỗi.

Mã nguồn trong hub_sdk/helpers/error_handler.py
def handle(self) -> str:
    """
    Handle the error based on the provided status code.

    Returns:
        (str): A message describing the error.
    """
    error_handlers = {
        401: self.handle_unauthorized,
        404: self.handle_not_found,
        500: self.handle_internal_server_error,
        429: self.handle_ratelimit_exceeded,
    }

    handler = error_handlers.get(self.status_code, self.get_default_message)
    return handler()

handle_internal_server_error() staticmethod

Xử lý lỗi máy chủ nội bộ (HTTP 500).

Trở lại:

Kiểu Sự miêu tả
str

Thông báo lỗi cho biết lỗi máy chủ nội bộ.

Mã nguồn trong hub_sdk/helpers/error_handler.py
@staticmethod
def handle_internal_server_error() -> str:
    """
    Handle an internal server error (HTTP 500).

    Returns:
        (str): An error message indicating an internal server error.
    """
    return "Internal server error."

handle_not_found() staticmethod

Xử lý lỗi không tìm thấy tài nguyên (HTTP 404).

Trở lại:

Kiểu Sự miêu tả
str

Thông báo lỗi cho biết không tìm thấy tài nguyên được yêu cầu.

Mã nguồn trong hub_sdk/helpers/error_handler.py
@staticmethod
def handle_not_found() -> str:
    """
    Handle a resource not found error (HTTP 404).

    Returns:
        (str): An error message indicating that the requested resource was not found.
    """
    return "Resource not found."

handle_ratelimit_exceeded()

Xử lý giới hạn tốc độ vượt quá lỗi (HTTP 429).

Trở lại:

Kiểu Sự miêu tả
str

Thông báo lỗi cho biết đã vượt quá giới hạn tốc độ.

Mã nguồn trong hub_sdk/helpers/error_handler.py
def handle_ratelimit_exceeded(self) -> str:
    """
    Handle rate limit exceeded error (HTTP 429).

    Returns:
        (str): An error message indicating rate limit exceeded.
    """
    error_msg = "Rate Limits Exceeded: Please try again later."

    if "X-RateLimit-Reset" in self.headers:
        rate_reset = self.headers.get("X-RateLimit-Reset")

        try:
            reset_time = datetime.datetime.fromtimestamp(int(rate_reset)).strftime("%Y-%m-%d %H:%M:%S")
        except ValueError:
            reset_time = "unknown"

        error_msg = (
            "You have exceeded the rate limits for this request. "
            f"You will be able to make requests again after {reset_time}."
        )
    return error_msg

handle_unauthorized() staticmethod

Xử lý lỗi trái phép (HTTP 401).

Trở lại:

Kiểu Sự miêu tả
str

Thông báo lỗi cho biết truy cập trái phép.

Mã nguồn trong hub_sdk/helpers/error_handler.py
@staticmethod
def handle_unauthorized() -> str:
    """
    Handle an unauthorized error (HTTP 401).

    Returns:
        (str): An error message indicating unauthorized access.
    """
    return "Unauthorized: Please check your credentials."

handle_unknown_error() staticmethod

Xử lý lỗi không xác định.

Trở lại:

Kiểu Sự miêu tả
str

Một thông báo lỗi cho biết rằng đã xảy ra lỗi không xác định.

Mã nguồn trong hub_sdk/helpers/error_handler.py
@staticmethod
def handle_unknown_error() -> str:
    """
    Handle an unknown error.

    Returns:
        (str): An error message indicating that an unknown error occurred.
    """
    return "Unknown error occurred."