我的代码被这个函数调用卡住了:
feedparser.parse("http://...")
这在以前是有效的。url甚至不可能在浏览器中打开。你将如何治疗这个病例?是否存在超时的可能性?我想继续,就好像什么都不会发生一样(只是打印一些消息或记录这个问题)
发布于 2012-03-19 15:22:26
您可以使用socket.setdefaulttimeout()
全局指定超时。
超时可以限制单个套接字操作可以持续多长时间,feedparser.parse()
可以执行许多套接字操作,因此在dns、建立tcp连接、发送/接收数据上花费的总时间可能要长得多。参见Read timeout using either urllib2 or any other http library。
发布于 2016-09-05 12:05:36
使用Python库进行网络IO,使用requests
解析器进行解析:
# Do request using requests library and timeout
try:
resp = requests.get(rss_feed, timeout=20.0)
except requests.ReadTimeout:
logger.warn("Timeout when reading RSS %s", rss_feed)
return
# Put it to memory stream object universal feedparser
content = BytesIO(resp.content)
# Parse content
feed = feedparser.parse(content)
发布于 2020-07-08 08:26:24
根据作者的recommendation1,应该使用requests库来做http请求,并将结果解析给feedparser。
https://stackoverflow.com/questions/9772691
复制相似问题