[英]How to implement a retry option in PyCurl
如何在python的PyCurl(libcurl)模块中实现重试选项? 类似的效果:
卷曲--retry 3 --retry延迟5 ' http://somesite.com/somefile '
当前代码:
buffer = BytesIO()
c = pycurl.Curl()
c.setopt(c.URL, 'http://somesite.com/somefile')
with open('output.txt','w') as f:
c.setopt(c.WRITEFUNCTION, f.write)
c.perform()
Pycurl不知道如何通过WRITEDATA
或WRITEFUNCTION
选项重新初始化您提供的WRITEDATA
,因此您的代码必须实现重试逻辑:
retries_left = 3
delay_between_retries = 5 # seconds
success = False
c = pycurl.Curl()
c.setopt(c.URL, 'http://somesite.com/somefile')
while retries_left > 0:
try:
with open('output.txt', 'w') as f:
c.setopt(c.WRITEFUNCTION, f.write)
c.perform()
success = True
break
except BaseException as e:
retries_left -= 1
time.sleep(delay_between_retries)
# check success
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.