Menu
CoddyTech

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.

challenge icon

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: 28

Nế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ử

Terminal
quiz iconTự kiểm tra

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

Tự luyện tập: Playground Terminal