一、遇到问题
最近遇到一个小问题 : 发现我的进程在调某个 API 的时候,不能正常 work 了。
马上一顿 strace -p pid
操作,定睛一看,
发现我的进程卡在了 recvfrom(23) 不动了,一直不会进入 accept 或者 epoll_wait ,
没有请求响应,也不会有任何的报错。
这时候才想起被requests.post
坑了,这货默认是阻塞的,除非显式指定了 timeout
值,否则不会做超时处理。
二、显式指定超时和重试
配置 requests 在经过 timeout( s )之后停止等待响应,从而避免进程一直卡住:
try:
requests.adapters.DEFAULT_RETRIES = 2
response = requests.