From b31159d5511f0444f15b23ce7b350825cb1ee876 Mon Sep 17 00:00:00 2001 From: ryanss Date: Sun, 8 Feb 2015 11:33:30 -0500 Subject: Fix #5 Timeout HTTP requests after 5 sconds --- plugin/hackernews.py | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/plugin/hackernews.py b/plugin/hackernews.py index afbd533..bcebee0 100644 --- a/plugin/hackernews.py +++ b/plugin/hackernews.py @@ -55,8 +55,13 @@ def hacker_news(): bwrite("└───┘") bwrite("") - news1 = json.loads(urllib2.urlopen(API_URL+"/news").read()) - news2 = json.loads(urllib2.urlopen(API_URL+"/news2").read()) + try: + news1 = json.loads(urllib2.urlopen(API_URL+"/news", timeout=5).read()) + news2 = json.loads(urllib2.urlopen(API_URL+"/news2", timeout=5).read()) + except: + print "HackerNews.vim Error: HTTP Request Timeout" + return + for i, item in enumerate(news1+news2): if 'title' not in item: continue @@ -92,7 +97,12 @@ def hacker_news_link(external=False): browser = webbrowser.get() browser.open("https://news.ycombinator.com/item?id="+id) return - item = json.loads(urllib2.urlopen(API_URL+"/item/"+id).read()) + try: + item = json.loads(urllib2.urlopen(API_URL+"/item/"+id, + timeout=5).read()) + except: + print "HackerNews.vim Error: HTTP Request Timeout" + return vim.command("edit .hackernews") bwrite("%s (%s)" % (item['title'], item['domain'])) bwrite("%d points by %s %s | %d comments" @@ -134,7 +144,12 @@ def hacker_news_link(external=False): browser = webbrowser.get() browser.open("https://news.ycombinator.com/item?id="+id) return - item = json.loads(urllib2.urlopen(API_URL+"/item/"+id).read()) + try: + item = json.loads(urllib2.urlopen(API_URL+"/item/"+id, + timeout=5).read()) + except: + print "HackerNews.vim Error: HTTP Request Timeout" + return vim.command("edit .hackernews") bwrite(item['title']) bwrite("Posted %s by %s" % (item['time_ago'], item['user'])) @@ -150,8 +165,12 @@ def hacker_news_link(external=False): browser = webbrowser.get() browser.open(url) return + try: + content = urllib2.urlopen(MARKDOWN_URL+url, timeout=5).read() + except: + print "HackerNews.vim Error: HTTP Request Timeout" + return vim.command("edit .hackernews") - content = urllib2.urlopen(MARKDOWN_URL+url).read() for i, line in enumerate(content.split('\n')): if not line: bwrite("") @@ -161,8 +180,6 @@ def hacker_news_link(external=False): bwrite(wrap) return - print "HackerNews.vim Error: Could not parse [item id]" - html = HTMLParser.HTMLParser() -- cgit v1.2.3