我的 python 脚本在没有任何干预的情况下停止工作

My python script stops working without any intervention

我是 python 的新手,我的脚本持续了大约 3-4 小时并且没有保存任何错误消息。是什么导致了这个问题?

这是我的代码:

import time
import urllib.request
import threading

def load():
    try:
        content = str(urllib.request.urlopen("[URL]").read())
        # do sth with content
        threading.Timer(0.5, load).start()
    except Exception as e:
        file = open("Error.txt","w") 
        file.write(time.strftime("%H:%M:%S\n\n")) 
        file.write(e.message)
        file.close()
        threading.Timer(0.5, load).start()

def main(args):
    load()
    return 0

if __name__ == '__main__':
    import sys
    sys.exit(main(sys.argv))

这里是 nohup.out ubuntu 14.04 上的文件:

Exception in thread Thread-907:
Traceback (most recent call last):
  File "/usr/lib/python3.4/urllib/request.py", line 1182, in do_open
    h.request(req.get_method(), req.selector, req.data, headers)
  File "/usr/lib/python3.4/http/client.py", line 1125, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python3.4/http/client.py", line 1163, in _send_request
    self.endheaders(body)
  File "/usr/lib/python3.4/http/client.py", line 1121, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python3.4/http/client.py", line 951, in _send_output
    self.send(msg)
  File "/usr/lib/python3.4/http/client.py", line 886, in send
    self.connect()
  File "/usr/lib/python3.4/http/client.py", line 863, in connect
    self.timeout, self.source_address)
  File "/usr/lib/python3.4/socket.py", line 512, in create_connection
    raise err
  File "/usr/lib/python3.4/socket.py", line 503, in create_connection
    sock.connect(sa)
OSError: [Errno 101] Network is unreachable

Network is unreachable 通常表示您的计算机存在连接问题。也许这是一个间歇性的、短暂的问题,但您永远不会尝试检测它并从中恢复。

考虑使用类似 retry decorator 的方式,或手动处理。

(我还发现你循环获取逻辑的方式很奇怪。为什么简单的单线程循环对你不起作用?)