python - pycurl 中的库重试选项
问题描述
Pycurl 中是否有我可以设置的重试选项?我想专门针对 DNS 解析失败重试。如果可能的话,我不喜欢自己重试。
curl --retry 3 "www.google.com"
Curl 手册页包含有关--retry
选项的详细信息。但我setopt
在 curl API文档中看不到等效项。这就是为什么 Pycurl 中没有重试选项的原因吗?
我看了这个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 允许指定要作为流上传的数据。如果上传失败,如何重试?一旦从流中读取数据,它就不再可用。
If you are calling pycurl in such a way that the entire operation can be retried, you can retry it in your application.
推荐阅读
- java - 如何使用 Criteria Builder 过滤参数列表?
- ios - 本机模块不能为空 - RCTSystemSetting
- reactjs - 移除元素后事件处理卡住
- list - 在 Racket 博士中,我如何以相反的顺序显示列表中的 2 个元素?
- scala - 想要转置 spark scala 中的列
- python-3.x - 将大数组拆分为有条件的小部分
- javascript - array.splice 忽略其中一个元素
- android - 在android studio中绘制部分圆圈作为进度条
- asp.net - err_connection_reset VS2019(杀毒问题)
- c - How to apply NXOR on 2 bits in c