You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2021/03/02 17:30:44 UTC

[allura] 01/01: Put a general network socket timeout around RSS feed fetching (default otherwise is no timeout)

This is an automated email from the ASF dual-hosted git repository.

brondsem pushed a commit to branch db/blog_rss_timeouts
in repository https://gitbox.apache.org/repos/asf/allura.git

commit 6b9f07b94f9531f90a791f857ee4f3951a180f79
Author: Dave Brondsema <db...@slashdotmedia.com>
AuthorDate: Tue Mar 2 12:25:31 2021 -0500

    Put a general network socket timeout around RSS feed fetching (default otherwise is no timeout)
---
 ForgeBlog/forgeblog/command/rssfeeds.py | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/ForgeBlog/forgeblog/command/rssfeeds.py b/ForgeBlog/forgeblog/command/rssfeeds.py
index cc64d8a..e35a4cd 100644
--- a/ForgeBlog/forgeblog/command/rssfeeds.py
+++ b/ForgeBlog/forgeblog/command/rssfeeds.py
@@ -35,6 +35,7 @@ from forgeblog.main import ForgeBlogApp
 from allura.lib import exceptions
 from allura.lib.helpers import exceptionless
 from allura.lib.helpers import plain2markdown
+from allura.lib.utils import socket_default_timeout
 
 # Everything in this file depends on html2text,
 # so import attempt is placed in global scope.
@@ -75,10 +76,11 @@ class RssFeedsCommand(base.BlogCommand):
         user = M.User.query.get(username=self.options.username)
         c.user = user
 
-        self.prepare_feeds()
-        for appid in self.feed_dict:
-            for feed_url in self.feed_dict[appid]:
-                self.process_feed(appid, feed_url)
+        with socket_default_timeout(20):
+            self.prepare_feeds()
+            for appid in self.feed_dict:
+                for feed_url in self.feed_dict[appid]:
+                    self.process_feed(appid, feed_url)
 
     def prepare_feeds(self):
         feed_dict = {}
@@ -105,10 +107,10 @@ class RssFeedsCommand(base.BlogCommand):
         app = ForgeBlogApp(c.project, appconf)
         c.app = app
 
-        allura_base.log.info("Get feed: %s" % feed_url)
+        allura_base.log.info("Getting {} feed {}".format(app.url, feed_url))
         f = feedparser.parse(feed_url)
         if f.bozo:
-            allura_base.log.exception("%s: %s" % (feed_url, f.bozo_exception))
+            allura_base.log.warn("{} feed {} errored: {}".format(app.url, feed_url, f.bozo_exception))
             return
         for e in f.entries:
             self.process_entry(e, appid)