如果互联网出现故障,python wget库不会返回。如果互联网停机,我该如何返回错误?

时间:2017-11-08 08:49:43

标签: python wget

我有以下代码在循环中下载文件,

import wget
try:
    wget.download(url)
except:
    pass

但如果互联网出现故障,它就不会返回! 所以我的整个循环都被卡住了。

如果互联网出现故障,我想重复相同的下载。所以我想知道是否会发生任何错误。

我该如何缓解这种情况?

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是将下载代码移动到一个线程,并使其成为可以中断的单独进程。

您可以使用python Thread和Timer模块来实现它。

from threading import Thread, Timer
from functools import partial
import time
import urllib

def check_connectivity(t):
    try:
        urllib.request.urlopen("http://google.com", timeout=2)
    except Exception as e:
        t._Thread__stop()

class Download(Thread):


  def run(self):
    print("Trying to download file....")
    con = partial(check_connectivity, self)
    while True:
      t = Timer(5, con) # Checks the connectivity every 5 second or less.
      t.start()
      # your download code....




def main():
  down = Download()
  down.start()
  down.join()

您可以在线程的run方法中移动主下载循环。并启动一个监听网络连接的计时器。