首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带超时的feedparser

带超时的feedparser
EN

Stack Overflow用户
提问于 2012-03-19 23:12:17
回答 3查看 4.1K关注 0票数 15

我的代码被这个函数调用卡住了:

代码语言:javascript
复制
feedparser.parse("http://...")

这在以前是有效的。url甚至不可能在浏览器中打开。你将如何治疗这个病例?是否存在超时的可能性?我想继续,就好像什么都不会发生一样(只是打印一些消息或记录这个问题)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-19 23:22:26

您可以使用socket.setdefaulttimeout()全局指定超时。

超时可以限制单个套接字操作可以持续多长时间,feedparser.parse()可以执行许多套接字操作,因此在dns、建立tcp连接、发送/接收数据上花费的总时间可能要长得多。参见Read timeout using either urllib2 or any other http library

票数 17
EN

Stack Overflow用户

发布于 2016-09-05 20:05:36

使用Python库进行网络IO,使用requests解析器进行解析:

代码语言:javascript
复制
# 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)
票数 20
EN

Stack Overflow用户

发布于 2020-07-08 16:26:24

根据作者的recommendation1,应该使用requests库来做http请求,并将结果解析给feedparser。

1

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9772691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档