使用python请求库从Twitter';s用户流-如何检测断开连接?

使用python请求库从Twitter';s用户流-如何检测断开连接?,python,http,python-requests,urllib3,Python,Http,Python Requests,Urllib3,我正试图用它来创建一种强大的方式,从Twitter的用户流中进行消费。到目前为止,我已经制作了以下基本工作示例: “”“ 使用请求连接到Twitter用户流的示例。 """ 导入系统 导入json 导入请求 从oauth_hook导入OAuthHook def userstream(访问令牌、访问令牌、用户密钥、用户密钥): oauth\u hook=OAuthHook(access\u token=access\u token,access\u token\u secret=access\u

我正试图用它来创建一种强大的方式,从Twitter的用户流中进行消费。到目前为止,我已经制作了以下基本工作示例:

“”“
使用请求连接到Twitter用户流的示例。
"""
导入系统
导入json
导入请求
从oauth_hook导入OAuthHook
def userstream(访问令牌、访问令牌、用户密钥、用户密钥):
oauth\u hook=OAuthHook(access\u token=access\u token,access\u token\u secret=access\u token\u secret,
消费者密钥=消费者密钥,消费者密钥=消费者密钥,
标题_auth=True)
hooks=dict(预请求=oauth\u hook)
config=dict(verbose=sys.stderr)
client=requests.session(hooks=hooks,config=config)
data=dict(分隔符=“长度”)
r=客户端。post(“https://userstream.twitter.com/2/user.json,数据=数据,预取=假)
#如何检测断开连接
# https://github.com/kennethreitz/requests/pull/200/files#L13R169
#使用超时?http://pguides.net/python-tutorial/python-timeout-a-function/
对于r.iter\u行中的块(块大小=1):
if chunk而非chunk.isdigit():
yield json.loads(块)
如果名称=“\uuuuu main\uuuuuuuu”:
导入pprint
导入设置
对于用户流中的obj(访问令牌=设置。访问令牌,访问令牌=设置。访问令牌=设置。访问令牌=设置。消费者密钥=设置。消费者密钥,消费者密钥=设置。消费者密钥):
pprint.pprint(obj)
但是,我需要能够优雅地处理断开连接。当前,当流断开连接时,上面的操作将挂起,并且没有引发异常


实现这一目标的最佳方式是什么?有没有办法通过urllib3连接池检测到这种情况?我应该使用超时吗?

我建议在client.post()调用中添加超时参数

但是,需要注意的是,请求不会设置TCP超时,因此您可以使用以下设置:

import socket
socket.setdefaulttimeout(TIMEOUT)