超时与重试
Coddy 使用终端进行网络通信 课程的第 45 课,共 47 课。
默认情况下,curl 会等待很长时间。在脚本中,这是一个 bug:只要有一个主机无法访问,你的任务就会一直卡住,直到有人发现。
curl -s --max-time 5 --connect-timeout 2 URL--connect-timeout 限制建立连接所花的时间。--max-time 限制整个操作的耗时。超过任一限制都会返回退出代码 28。
重试需要比看起来更谨慎。重复发送失败的 GET 或 PUT 是安全的,因为这两种请求都是幂等的。重复发送 POST 可能会创建第二条记录,而超时是最糟糕的情况:你始终无法确定第一次请求是否已被处理。
所以,读取可以自由重试,写入则要三思而后行。必须重试时,可以向服务器请求一种确保安全的方式,例如使用幂等键。
挑战
中等为一个永远不会收到响应的请求设置时间限制。
请求 http://10.255.255.1/,这个地址会悄无声息地丢弃流量。等待 2 秒后放弃,并打印 gave up: ,后面接 curl 的退出代码。
预期输出:
gave up: 28如果不设置超时,这个请求会卡住一分钟以上。
亲手试试
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
使用终端进行网络通信中的所有课
自己练习: Terminal 在线编辑器