2016-12-23 34 views
0

如何在python中的PyCurl(libcurl)模块中实现重试选项?同样的事情也该效果:如何在PyCurl中实现重试选项

卷曲--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() 

回答

0

Pycurl不知道如何重新初始化您通过WRITEDATAWRITEFUNCTION选项提供的消费者,因此您的代码必须执行重试逻辑:

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