python – 在ssl do_handshake()上挂着的Tweepy 2.0
我有一个长期运行的Twitter抓取脚本,偶尔挂起堆栈跟踪结束
"/usr/lib/python2.7/ssl.py",line 305: self._sslobj.do_handshake() 我的问题是“为什么?”和“我能做些什么来解决它?”. 在发生这种情况之前,通常会持续一周左右.最后一次,处理tweepy挂起的4个线程中有3个挂起(第四个是等待来自挂起线程的信息).奇怪的是,线程挂起之间有相当长的延迟:首先,调用api.followers_ids()的线程挂起,然后大约12分钟后调用api.friends_ids()的线程挂起,然后1小时12分钟后(!)线程调用api.search()挂起.在所有这些之间有许多api调用. 当我发送QUIT信号时,我在那里有一些代码来转储它的堆栈跟踪,并且我为挂起的线程获得了类似的内容.它们都是(和包括)第二个条目(tweepy / binder.py,第185行,_call部分)相同.另外两个来自tweepy / cursor.py,接下来的第85行和下一行的tweepy / cursor.py,第60行: File "myTwitterScrapingScript.py",line 245,in checkStatus status = api.rate_limit_status() File "/scratch/bin/python-virtual-environments/tweepy-2/local/lib/python2.7/site-packages/tweepy/binder.py",line 185,in _call return method.execute() File "/scratch/bin/python-virtual-environments/tweepy-2/local/lib/python2.7/site-packages/tweepy/binder.py",line 146,in execute conn.request(self.method,url,headers=self.headers,body=self.post_data) File "/usr/lib/python2.7/httplib.py",line 958,in request self._send_request(method,body,headers) File "/usr/lib/python2.7/httplib.py",line 992,in _send_request self.endheaders(body) File "/usr/lib/python2.7/httplib.py",line 954,in endheaders self._send_output(message_body) File "/usr/lib/python2.7/httplib.py",line 814,in _send_output self.send(msg) File "/scratch/bin/python-virtual-environments/tweepy-2/local/lib/python2.7/site-packages/tweepy/binder.py",in _send_output self.send(msg) File "/usr/lib/python2.7/httplib.py",line 776,in send self.connect() File "/usr/lib/python2.7/httplib.py",line 1161,in connect self.sock = ssl.wrap_socket(sock,self.key_file,self.cert_file) File "/usr/lib/python2.7/ssl.py",line 381,in wrap_socket ciphers=ciphers) File "/usr/lib/python2.7/ssl.py",line 143,in __init__ self.do_handshake() File "/usr/lib/python2.7/ssl.py",line 305,in do_handshake self._sslobj.do_handshake() 线程挂起的时候有几个错误.这不是太不寻常,虽然这个数字略高于正常水平.第四个看起来很有趣但它发生在线程挂起之前. > [Errno 110]:在最后一次followers_ids()调用之前,连接超时约7分钟(中间有许多各种api调用) 解决方法
这个问题似乎与tweepy没有实现超时.在最近的tweepy版本中,这已得到修复,此问题从未发生过(连续几个月的数据收集).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |