Python internal error Handling -
i'm having issues program closing @ random stages , not sure why.
at first, thought because getting error added error handle. still reason closes after few days of running , no error displayed. code below
import requests import lxml.html lh import sys import time clint.textui import puts, colored api_url = "http://urgmsg.net/livenosaas/ajax/update.php" class scraper (object): id_stamp = 0 def __init__(self, timeout, recent_messages=true): self.timeout = timeout self.handlers = [] self.recent_messages = recent_messages def register_handler(self, handler): self.handlers.append(handler) return handler def scrape(self): try: resp = requests.get(api_url, params={'f': self.id_stamp}).json() except requests.exceptions.connectionerror e: puts("error encountered when connecting urgmsg: ", newline=false) puts(colored.red(e.__class__.__name__), newline=false) puts(" " + e.message) return if not resp['updated']: return old_id_stamp = self.id_stamp self.id_stamp = resp['idstamp'] # if old_id_stamp 0, first scrape # return whole bunch of recent past messages if not self.recent_messages , old_id_stamp == 0: return # pager messages returned newest oldest, want # process them oldest newest frags = lh.fragments_fromstring(resp['data'])[::-1] frag in frags: msg = pagermessage(frag) handler in self.handlers: handler(msg) def run(self): while true: self.scrape() time.sleep(self.timeout) class pagermessage: def __init__(self, fragment): children = fragment.getchildren() self.datetime = children[0].text self.text = children[1].text # channel starts `- ` self.channel = children[1].getchildren()[0].text[2:] self.response = 'cfsres' in self.text def __str__(self): return "{} [{}]: {}".format(self.channel, self.datetime, self.text) if __name__ == "__main__": scraper = scraper(5) @scraper.register_handler def handler(msg): puts(colored.yellow(msg.channel), newline=false) puts(" [", newline=false) puts(colored.green(msg.datetime), newline=false) puts("] ", newline=false) if msg.response: puts(colored.red(msg.text)) else: puts(msg.text) scraper.run()
have set part out wrong ?
except requests.exceptions.connectionerror e: puts("error encountered when connecting urgmsg: ", newline=false) puts(colored.red(e.__class__.__name__), newline=false) puts(" " + e.message) return
as suggested @sobolevn change
except: e: puts("error encountered", newline=false) puts(colored.red(e.__class__.__name__), newline=false) puts(" " + e.message) return
Comments
Post a Comment