[Tutor] checking connection to internet until success

Peter Otten __peter__ at web.de
Tue Jan 2 11:20:38 EST 2018


Pi wrote:

> Hi Tutor,
> 
> with this code i am getting actual date from internet. I need correct
> date, because i am not sure this set on computer is right.
>
> import requests, time
> 
> try:
>      OnLineDate = requests.get("http://just-the-time.appspot.com").text[:10]
>      OffLineDate = time.strftime("%Y-%m-%d")
> 
>      if OnLineDate == OffLineDate:
> 
>          do_something
> 
>      else:
> 
>          do_something_else
> 
> 
> except requests.ConnectionError:
>      print("Can not connect.")
> 
> But this code is run once. And i am stuck. Tries with while loop doesnt
> took any advance. I was thinking about something like after method used
> in tkinter, but still i cant figure out how do this. Can You guide me,
> how check connection to internet to check for every lets say 30 seconds
> until success?

You are on the right track with the while-loop. You can use the else clause 
of the try...except construct to break out of the loop once you have 
successfully read the date:

# untested
import requests, time

while True:  # run forever
    try:
         OnLineDate = requests.get("http://just-the-time.appspot.com").text[:10]
    except requests.ConnectionError:
         print("Can not connect.")
    else:
         # no exception
         OffLineDate = time.strftime("%Y-%m-%d")
         if OnLineDate == OffLineDate:
             do_something
         else:
             do_something_else
        break  # out of the while-True loop
    time.sleep(30)  # try again after 30 seconds


If you want to give up after a few tries replace the while loop with

for attempt in range(max_attempts):
    ...   # same as above



More information about the Tutor mailing list