如果互联网中断一段时间,pythonwget库不会返回。如果Internet已关闭,如何返回错误?

2024-04-27 00:58:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码来下载一个循环中的文件

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

但是如果互联网瘫痪了,它就不会回来了! 所以我的整个循环都卡住了。你知道吗

我想重复同样的下载,如果互联网瘫痪。所以我想知道是否有错误发生。你知道吗

我怎样才能减轻这一点?你知道吗


Tags: 文件代码importurldownload错误互联网pass
1条回答
网友
1楼 · 发布于 2024-04-27 00:58:57

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

可以使用python线程和定时器模块来实现。你知道吗

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方法中。启动一个计时器,在里面监听网络连接。你知道吗

相关问题 更多 >