2017-11-03 1 views
0

저는 나무 딸기에 아주 작고 간단한 파이썬 스크립트가 있습니다. 활성 Wi-Fi 연결이있는 한 잘 작동합니다. 라즈베리는 모바일 핫스팟에 연결되어 있으며 범위를 벗어날 수 있으므로 연결이 끊어 질 수 있습니다. 이 문제가 발생하면 예외를 throw하고 요청 "while"루프를 종료합니다.예외시 재시도 urllib 요청

이 스크립트를 일시 중지하거나 예외를 "무시"할 수있는 방법에 대한 자세한 정보를 얻으려고하면 연결이 복원되는 즉시 루프로 돌아갑니다.

import urllib 
    import serial 
    from time import sleep 

    link = "http://myurl/" 
    while True: 
     f = urllib.urlopen(link) 
     myfile = f.read() 
     print myfile 
     ser = serial.Serial('/dev/ttyUSB0', 9600) 
     ser.write(myfile) 
     sleep(3) 
+0

을이 라인이 있음을 알고있는 경우 :'= urllib.urlopen (링크) f를'예외를 발생시킬 수있다, 당신은 시도 '로 포장 할 수 있습니다 .. .except ...'그리고 당신이 원하는 방식으로 처리한다. – alfasin

+0

'try' /'except' 그리고 예외는'pass'이다. – roganjosh

답변

0

try 성명을 사용해보십시오!

while 루프 내에서 try: except 블록을 사용하여 코드가 실행되지 않더라도 (연결이 끊어 지거나 이상한 일이 발생하더라도) 프로그램을 종료하지 않도록 할 수 있습니다.

코드의이 유형은 다음과 같이 보일 것이다 :

import urllib 
import serial 
from time import sleep 

link = "http://myurl/" 
while True: 
    try: 
     f = urllib.urlopen(link) 
     myfile = f.read() 
     print myfile 
     ser = serial.Serial('/dev/ttyUSB0', 9600) 
     ser.write(myfile) 
     sleep(3) 
    except: 
     sleep(3) #If the code executed in the try part fails, then your program will simply sleep off 3 seconds before trying again! 
+0

정말 고마워요, 나는이 예외 규칙들을 많이 찾았지만, 사용할 수있는 단순성을 결코 보지 못했습니다. 이것은 매력처럼 작동합니다! – Rogier