pycurl 中的库重试选项
Library retry option in pycurl
Pycurl 中是否有我可以设置的重试选项?我想专门针对 DNS 解析失败进行重试。如果可能的话,我不想自己重试。
curl --retry 3 "www.google.com"
Curl manpage has details about --retry
option. But I don't see equivalent setopt
in curl API 文档。这就是 Pycurl 中没有重试选项的原因吗?
我看了 this SO 问题。这是重试的唯一方法吗?
我当前的代码是这样的:
c = pycurl.Curl()
b = six.BytesIO()
c.setopt(pycurl.WRITEFUNCTION, b.write)
c.setopt(pycurl.URL, "www.google.com")
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.SSL_VERIFYHOST, 2)
c.setopt(pycurl.SSL_VERIFYPEER, 1)
c.setopt(pycurl.VERBOSE, 1)
retries = 3
while retries:
try:
c.perform()
except as e:
if 'Could not resolve' in str(e):
retries -= 1
continue
# log exception e and exit here
pycurl 不提供重试功能。
例如,pycurl 允许指定数据以流的形式上传。如果上传失败,如何重试?一旦从流中读取数据,它就不再可用。
如果您以可以重试整个操作的方式调用 pycurl,则可以在您的应用程序中重试。
Pycurl 中是否有我可以设置的重试选项?我想专门针对 DNS 解析失败进行重试。如果可能的话,我不想自己重试。
curl --retry 3 "www.google.com"
Curl manpage has details about --retry
option. But I don't see equivalent setopt
in curl API 文档。这就是 Pycurl 中没有重试选项的原因吗?
我看了 this SO 问题。这是重试的唯一方法吗?
我当前的代码是这样的:
c = pycurl.Curl()
b = six.BytesIO()
c.setopt(pycurl.WRITEFUNCTION, b.write)
c.setopt(pycurl.URL, "www.google.com")
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.SSL_VERIFYHOST, 2)
c.setopt(pycurl.SSL_VERIFYPEER, 1)
c.setopt(pycurl.VERBOSE, 1)
retries = 3
while retries:
try:
c.perform()
except as e:
if 'Could not resolve' in str(e):
retries -= 1
continue
# log exception e and exit here
pycurl 不提供重试功能。
例如,pycurl 允许指定数据以流的形式上传。如果上传失败,如何重试?一旦从流中读取数据,它就不再可用。
如果您以可以重试整个操作的方式调用 pycurl,则可以在您的应用程序中重试。