2017-03-20 10 views
2

私はpythonを初めて使い、スクリプトは約3-4時間続き、エラーメッセージは保存されません。この問題の原因は何ですか?私のpythonスクリプトは、介入なしで動作を停止します

は、ここに私のコードです:

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)) 

そして、ここでのUbuntu 14.04上のnohup.outファイルです:

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 
+2

'Expection' - >' Exception'。 Typo、そのように閉じてください。 – njzk2

+0

ファイル= open( "Error.txt"、 "w")をfile = open( "Error.txt"、 "a")モードに変更してください。 – Varad

+0

'logging'モジュールは手動でファイルを開くより意味があります –

答えて

0

Network is unreachableは通常、あなたのマシンに接続の問題があることを意味します。断続的で短命の問題かもしれませんが、それを検出して回復することは決してありません。

retry decoratorなどを使用するか、手動で処理することを検討してください。

(私もシンプルなシングルスレッドのループがあなたのために動作しませんでしたなぜ、むしろ奇妙なフェッチロジックのループのあなたの方法を見つける。?)

関連する問題