带timeou的feedparser

2024-04-26 20:44:24 发布

您现在位置:Python中文网/ 问答频道 /正文

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

feedparser.parse("http://...")

这以前有用。甚至无法在浏览器中打开url。 你怎么治好这个案子?有可能超时吗?我想继续,好像什么都不会发生(只打印一些消息或记录此问题)


Tags: 代码http消息urlparse记录浏览器函数调用
2条回答

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

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

使用Pythonrequests库进行网络IO,feedparser仅用于解析:

# 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)

相关问题 更多 >