Thời gian chờ và thử lại
Bài học 45 trên 47 trong khóa học Mạng máy tính với terminal của Coddy.
Theo mặc định, curl chờ rất lâu. Trong một tập lệnh, đây là một lỗi: chỉ cần một máy chủ không thể truy cập là công việc của bạn sẽ bị treo cho đến khi có người nhận ra.
curl -s --max-time 5 --connect-timeout 2 URL--connect-timeout giới hạn thời gian chờ kết nối. --max-time giới hạn toàn bộ quá trình. Vượt quá một trong hai giới hạn sẽ trả về mã thoát 28.
Thử lại đòi hỏi cẩn thận hơn bạn tưởng. Thử lại một yêu cầu GET hoặc PUT thất bại thì an toàn, vì cả hai đều có tính lũy đẳng. Thử lại một yêu cầu POST có thể tạo thêm một bản ghi, và trường hợp hết thời gian chờ là tệ nhất: bạn không biết liệu yêu cầu đầu tiên đã được xử lý hay chưa.
Vì vậy, bạn có thể thử lại thao tác đọc thoải mái, nhưng hãy suy nghĩ kỹ trước khi thử lại thao tác ghi. Khi cần, hãy yêu cầu máy chủ cung cấp cách thực hiện an toàn, chẳng hạn như khóa idempotency.
Thử thách
Trung bìnhĐặt giới hạn thời gian cho một yêu cầu sẽ không bao giờ được phản hồi.
Gửi yêu cầu đến http://10.255.255.1/, một địa chỉ âm thầm bỏ qua lưu lượng truy cập, rồi từ bỏ sau 2 giây và in ra gave up: theo sau là mã thoát của curl.
Đầu ra dự kiến:
gave up: 28Nếu không đặt thời gian chờ, yêu cầu này sẽ treo hơn một phút.
Tự làm thử
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Mạng máy tính với terminal
6curl chuyên sâu
Xem các headerLưu phản hồiHeader tùy chỉnhTrạng thái và thời gianMã thoát của curlÔn tập: cờ curl9Xác thực và gỡ lỗi
Khóa API và BearerTác nhân người dùngThời gian chờ và thử lạiĐọc lỗiÔn tập: gỡ lỗiTự luyện tập: Playground Terminal