On 9/29/2010 4:59 AM, harryos wrote:
hi
I am trying to write a program to read data from a site url.
The program must read the data from site every 5 minutes.

def get_data_from_site(pageurlstr):
     h=urllib.urlopen(pageurlstr)
     data=h.read()
     process_data(data)

   A key point here is that you're not handling network
failures.  The first time you have a brief network
outage, your program will fail.

   Consider something like this:



def get_data_from_site(pageurlstr):
    try :
        h=urllib.urlopen(pageurlstr)
        data=h.read()
    except EnvironmentError as message :
        print("Error reading %s from network at %s: %s" %
                (pageurlstr, time.asctime(), str(message))
        return(False)
    process_data(data)
    return(True)


lastpoll = 0  # time of last successful read
POLLINTERVAL = 300.0
RETRYINTERVAL = 30.0
while True:
    status = get_data_from_site('http://somesite.com/')
    if not status : # if fail
        time.sleep(RETRYINTERVAL) # try again soon
        print("Retrying...")
        continue
    now = time.time() # success
    # Wait for the next poll period.  Compensate for how
    # long the read took.
    waittime = max(POLLINTERVAL - (now - lastpoll), 1.0)
    lastpoll = now
    time.sleep(waittime)




        
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to