iReworking the exceptions for requests. - zs - Zeitungsschau rss to email converter Err gopher.r-36.net 70 i Err gopher.r-36.net 70 1Log /scm/zs//log.gph gopher.r-36.net 70 1Files /scm/zs//files.gph gopher.r-36.net 70 1Refs /scm/zs//refs.gph gopher.r-36.net 70 1LICENSE /scm/zs//file/LICENSE.gph gopher.r-36.net 70 i--- Err gopher.r-36.net 70 1commit 61f5d5bbba7c474b4a7188f448cf9cbac9479485 /scm/zs//commit/61f5d5bbba7c474b4a7188f448cf9cbac9479485.gph gopher.r-36.net 70 1parent f29afa30f2666e89c18c0b6c4db3a405bdc9aa13 /scm/zs//commit/f29afa30f2666e89c18c0b6c4db3a405bdc9aa13.gph gopher.r-36.net 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net gopher.r-36.net 70 iDate: Sat, 24 Oct 2015 22:33:29 +0200 Err gopher.r-36.net 70 i Err gopher.r-36.net 70 iReworking the exceptions for requests. Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i* Requests has a different status code handling. Err gopher.r-36.net 70 i * the status code is returned by fetch() Err gopher.r-36.net 70 i* file:/// now has to be handled separatedly Err gopher.r-36.net 70 i Err gopher.r-36.net 70 iDiffstat: Err gopher.r-36.net 70 i zeitungsschau/feed.py | 15 ++++++++++++--- Err gopher.r-36.net 70 i zs | 24 +++++++++++------------- Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i2 files changed, 23 insertions(+), 16 deletions(-) Err gopher.r-36.net 70 i--- Err gopher.r-36.net 70 1diff --git a/zeitungsschau/feed.py b/zeitungsschau/feed.py /scm/zs//file/zeitungsschau/feed.py.gph gopher.r-36.net 70 i@@ -229,7 +229,16 @@ def parse(astr): Err gopher.r-36.net 70 i return feed Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i def fetch(uri): Err gopher.r-36.net 70 i- return parse(requests.get(uri, timeout=5,\ Err gopher.r-36.net 70 i- headers={"User-Agent": "Zeitungsschau/1.0"}).text.\ Err gopher.r-36.net 70 i- encode("utf-8")) Err gopher.r-36.net 70 i+ if "file://" in uri: Err gopher.r-36.net 70 i+ fd = open(uri[7:], "r") Err gopher.r-36.net 70 i+ fval = fd.read().encode("utf-8") Err gopher.r-36.net 70 i+ fd.close() Err gopher.r-36.net 70 i+ rcode = 200 Err gopher.r-36.net 70 i+ else: Err gopher.r-36.net 70 i+ fd = requests.get(uri, timeout=20,\ Err gopher.r-36.net 70 i+ headers={"User-Agent": "Zeitungsschau/1.0"}) Err gopher.r-36.net 70 i+ fval = fd.text.encode("utf-8") Err gopher.r-36.net 70 i+ rcode = fd.status_code Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ return (rcode, parse(fval)) Err gopher.r-36.net 70 i Err gopher.r-36.net 70 1diff --git a/zs b/zs /scm/zs//file/zs.gph gopher.r-36.net 70 i@@ -11,12 +11,13 @@ import zeitungsschau.feed as feed Err gopher.r-36.net 70 i import zeitungsschau.feeddb as feeddb Err gopher.r-36.net 70 i import zeitungsschau.opml as opml Err gopher.r-36.net 70 i import zeitungsschau.feedemail as feedemail Err gopher.r-36.net 70 i-import urllib.error Err gopher.r-36.net 70 i import socket Err gopher.r-36.net 70 i import http.client Err gopher.r-36.net 70 i import ssl Err gopher.r-36.net 70 i import getopt Err gopher.r-36.net 70 i import pprint Err gopher.r-36.net 70 i+import requests.exceptions Err gopher.r-36.net 70 i+import requests Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i dodebug = False Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i@@ -49,29 +50,26 @@ def run(db, selfeed=None, dryrun=False, onlychanges=False): Err gopher.r-36.net 70 i print("fetch %s" % (feeduri)) Err gopher.r-36.net 70 i curfeed = None Err gopher.r-36.net 70 i try: Err gopher.r-36.net 70 i- curfeed = feed.fetch(feeduri) Err gopher.r-36.net 70 i- except urllib.error.HTTPError as err: Err gopher.r-36.net 70 i- if err.code == 404: Err gopher.r-36.net 70 i- estr = "404" Err gopher.r-36.net 70 i- retries += 1 Err gopher.r-36.net 70 i+ (rcode, curfeed) = feed.fetch(feeduri) Err gopher.r-36.net 70 i except socket.gaierror: Err gopher.r-36.net 70 i continue Err gopher.r-36.net 70 i except socket.timeout: Err gopher.r-36.net 70 i continue Err gopher.r-36.net 70 i- except urllib.error.URLError: Err gopher.r-36.net 70 i- continue Err gopher.r-36.net 70 i except TimeoutError: Err gopher.r-36.net 70 i continue Err gopher.r-36.net 70 i except ConnectionResetError: Err gopher.r-36.net 70 i estr = "connreset" Err gopher.r-36.net 70 i retries += 1 Err gopher.r-36.net 70 i- except http.client.IncompleteRead: Err gopher.r-36.net 70 i- estr = "incompleteread" Err gopher.r-36.net 70 i- continue Err gopher.r-36.net 70 i- except http.client.BadStatusLine: Err gopher.r-36.net 70 i- estr = "badstatusline" Err gopher.r-36.net 70 i+ except requests.exceptions.ConnectionError: Err gopher.r-36.net 70 i+ estr = "connreset" Err gopher.r-36.net 70 i+ retries += 1 Err gopher.r-36.net 70 i+ except requests.exceptions.ReadTimeout: Err gopher.r-36.net 70 i continue Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i+ if rcode == 404: Err gopher.r-36.net 70 i+ estr = "404" Err gopher.r-36.net 70 i+ retries += 1 Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i if curfeed == None: Err gopher.r-36.net 70 i continue Err gopher.r-36.net 70 i Err gopher.r-36.net 70 .