您可以设置全局套接字超时(*):
import socket
timeout = 10
socket.setdefaulttimeout(timeout)
Run Code Online (Sandbox Code Playgroud)
(*) 编辑:正如评论中的人正确地指出:这在技术上是正确的,但它只对涉及单个套接字操作的任务具有可预测的结果.HTTP请求由多个套接字操作组成(例如,DNS请求或可能从HTTP客户端抽象出来的其他事物).因此,整个操作的超时变得不可预测.
不,没有.
这是因为HTTP规范没有为客户端提供任何指定HTTP请求的生存时间信息的内容.如上所述,您只能在TCP级别执行此操作.
另一方面,服务器可以通过HTTP状态代码408 Request Timeout resp 来通知客户端超时情况.504网关超时.
您也可以settimeout
在连接的套接字上使用(适用于Python 2.5):
connection = HTTPConnection('slow.service.com')
connection.request(...)
connection.sock.settimeout(5.0)
response = connection.getresponse()
response.read()
connection.close()
Run Code Online (Sandbox Code Playgroud)
如果服务器无法在5秒内发送响应,socket.error
则会引发响应.
归档时间: |
|
查看次数: |
26929 次 |
最近记录: |