Menu
CoddyTech

超时与重试

Coddy 使用终端进行网络通信 课程的第 45 课,共 47 课。

默认情况下,curl 会等待很长时间。在脚本中,这是一个 bug:只要有一个主机无法访问,你的任务就会一直卡住,直到有人发现。

curl -s --max-time 5 --connect-timeout 2 URL

--connect-timeout 限制建立连接所花的时间。--max-time 限制整个操作的耗时。超过任一限制都会返回退出代码 28。

重试需要比看起来更谨慎。重复发送失败的 GET 或 PUT 是安全的,因为这两种请求都是幂等的。重复发送 POST 可能会创建第二条记录,而超时是最糟糕的情况:你始终无法确定第一次请求是否已被处理。

所以,读取可以自由重试,写入则要三思而后行。必须重试时,可以向服务器请求一种确保安全的方式,例如使用幂等键。

challenge icon

挑战

中等

为一个永远不会收到响应的请求设置时间限制。

请求 http://10.255.255.1/,这个地址会悄无声息地丢弃流量。等待 2 秒后放弃,并打印 gave up: ,后面接 curl 的退出代码。

预期输出:

gave up: 28

如果不设置超时,这个请求会卡住一分钟以上。

亲手试试

终端
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

使用终端进行网络通信中的所有课

自己练习: Terminal 在线编辑器