We handle exceptions if PuSH fails
authorMichele Azzolari <macno@macno.org>
Tue, 17 Jan 2012 21:42:36 +0000 (22:42 +0100)
committerMichele Azzolari <macno@macno.org>
Tue, 17 Jan 2012 21:42:36 +0000 (22:42 +0100)
mediagoblin/submit/views.py

index 65243ca158f4c8058e4d6dd213382eb535f4dbf4..91498b09bcc3cc4017bdbf1bc8c175f66816f00f 100644 (file)
@@ -21,6 +21,7 @@ from cgi import FieldStorage
 
 from celery import registry
 import urllib,urllib2
+import logging
 
 from werkzeug.utils import secure_filename
 
@@ -131,15 +132,24 @@ def submit_start(request):
                                        'mediagoblin.user_pages.atom_feed',
                                        qualified=True,user=request.user.username)
                     hubparameters = {
-                            'hub.mode': 'publish',
-                            'hub.url': feed_url}
+                        'hub.mode': 'publish',
+                        'hub.url': feed_url}
                     hubdata = urllib.urlencode(hubparameters)
                     hubheaders = {
                         "Content-type": "application/x-www-form-urlencoded",
                         "Connection": "close"}
                     for huburl in mg_globals.app_config["push_urls"]:
-                        hubrequest = urllib2.Request(huburl, hubdata,hubheaders)
-                        hubresponse = urllib2.urlopen(hubrequest)
+                        hubrequest = urllib2.Request(huburl, hubdata, hubheaders)
+                        try:
+                            hubresponse = urllib2.urlopen(hubrequest)
+                        except urllib2.HTTPError as exc:
+                            # This is not a big issue, the item will be fetched
+                            # by the PuSH server next time we hit it
+                            logging.getLogger(__name__).warning(
+                                "push url %r gave error %r", huburl, exc.code)
+                        except urllib2.URLError as exc:
+                            logging.getLogger(__name__).warning(
+                                "push url %r is unreachable %r", huburl, exc.reason)
 
                 add_message(request, SUCCESS, _('Woohoo! Submitted!'))