等待网址响应的最长时间

时间:2015-03-31 20:31:32

标签: python urllib

我为我的代码创建了一个简单的更新检查函数,我设置为每次执行大量代码之前运行。它通知用户可以下载新版本。

这是一个MWE:

import urllib

def updater(__version__):
    try:
        # Get latest version number from master repo at Github.
        f = urllib.urlopen("https://raw.githubusercontent.com/chrisglass"
            "/django_polymorphic/master/polymorphic/__version__.py")
        s = f.read().split('"')

        if s[-2] != __version__:
            print "New version {} is available.".format(s[-2])
    except:
        pass

# Call function to check if new version is available.
__version__ = '0.1'
updater(__version__)

(那个回购不是我的,我在这个例子中使用它,因为我使用了它的__version.py__文件的类似版本)

这很好用,但是我担心Github最终会花太多时间做出回应,这会阻碍代码的执行。

有没有办法在说过5秒后跳出try块?这是推荐的解决方法吗?

1 个答案:

答案 0 :(得分:2)

使用urllib2,其urlopen有一个超时参数。

  

urllib2.urlopen(url [,data [,timeout [,cafile [,capath [,cadefault [,context]]]]))

https://docs.python.org/2/library/urllib2.html