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,则可以在您的应用程序中重试。