我应该在哪里检查pycurl持久连接的断开?
在我的脚本中,连接会中断/超时/抛出错误,但脚本仍然保持打开状态。我需要检测问题,以便重新启动脚本。
我们正在连接到gnip(社交媒体数据提供商)。
我的代码在这里:https://gist.github.com/3353033 我已经阅读了libcurl的选项,并阅读了php curl_setopts文档,因为它们也利用了libcurl。
在我的脚本中,连接会中断/超时/抛出错误,但脚本仍然保持打开状态。我需要检测问题,以便重新启动脚本。
我们正在连接到gnip(社交媒体数据提供商)。
我的代码在这里:https://gist.github.com/3353033 我已经阅读了libcurl的选项,并阅读了php curl_setopts文档,因为它们也利用了libcurl。
class Client:
time_start = time.time()
content = ""
def __init__(self,options):
self.options = options
self.buffer = ""
self.conn = pycurl.Curl()
self.conn.setopt(pycurl.USERPWD, "%s:%s" % (USER, PASS))
self.conn.setopt(pycurl.ENCODING,'gzip')
self.conn.setopt(pycurl.URL, STREAM_URL)
self.conn.setopt(pycurl.WRITEFUNCTION, self.on_receive)
self.conn.setopt(pycurl.FOLLOWLOCATION,1)
self.conn.setopt(pycurl.MAXREDIRS, 5)
self.conn.setopt(pycurl.COOKIEFILE,"cookie.txt")
try:
self.conn.perform()
except Exception,e:
print e.message
def on_receive(self, data):
self.buffer += data
if data.endswith("\r\n") and self.buffer.strip():
if(self.triggered()):
if(len(self.buffer) != 0 ):
try:
SaveThread(self.buffer).start()
except Exception, e:
print "something i commented would have told you there was an error"
system.exit(1)
self.buffer = ""
def triggered(self):
# First trigger based on size then based on time..
if (len(self.buffer) > SAVE_FILE_LENGTH):
return True
time_end = time.time()
if (((time_end - self.time_start) > ROLL_DURATION)): #for the time frame
self.time_start=time.time()
return True
return False
编辑:我已经修复了代码片段