Python 如何在PyCurl中实现重试选项

Python 如何在PyCurl中实现重试选项,python,curl,libcurl,pycurl,Python,Curl,Libcurl,Pycurl,如何在python中的PyCurl(libcurl)模块中实现重试选项?类似于以下情况的效果: curl--重试3--重试延迟5“” 当前代码: 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

如何在python中的PyCurl(libcurl)模块中实现重试选项?类似于以下情况的效果:

curl--重试3--重试延迟5“”

当前代码:

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
选项重新初始化您提供的使用者,因此您的代码必须实现重试逻辑:

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

Pycurl不知道如何通过
WRITEDATA
WRITEFUNCTION
选项重新初始化您提供的使用者,因此您的代码必须实现重试逻辑:

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