Ignore:
Timestamp:
Oct 1, 2012 12:44:06 PM (7 years ago)
Author:
potar
Message:

fixed ping to google (timeout was set)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.plonegooglesitemaps/branches/sitemap_date/quintagroup/plonegooglesitemaps/utils.py

    r3507 r3565  
    1 from urllib2 import urlopen 
    21from urllib import quote as urlquote 
    32from DateTime import DateTime 
     3import logging 
     4import urllib2 
     5import socket 
    46 
    57from Globals import DevelopmentMode 
     
    810 
    911from quintagroup.plonegooglesitemaps import config 
     12 
     13 
     14logger = logging.getLogger(__name__) 
     15 
     16 
     17# BBB: 'timeout' was added to urlopen in python2.6. 
     18# Method dedicated to compatibility with python2.4 and python2.5 
     19def urlopen(request, timeout=5.0, data=None, marker=[]): 
     20    global_timeout = marker 
     21    try: 
     22        try: 
     23            urllib2.urlopen(request, data, timeout=timeout) 
     24        except TypeError, e: 
     25            logger.info('TypeError: %s. You use python < 2.6. ' 
     26                        'Ugly socket.setdefaulttimeout hack applied ' 
     27                        'to avoid it upgrade your Plone.' % e) 
     28            # socket.getdefaulttimeout() -> None. 
     29            # It indicates that new socket objects have no timeout. 
     30            global_timeout = socket.getdefaulttimeout() 
     31            socket.setdefaulttimeout(timeout) 
     32            urllib2.urlopen(request) 
     33    finally: 
     34        if global_timeout is not marker: 
     35            socket.setdefaulttimeout(global_timeout) 
    1036 
    1137 
     
    2046        return 0 
    2147 
    22     sitemap_url = urlquote(resurl) 
    23  
    24     g = urlopen('http://www.google.com/webmasters/tools/ping?sitemap=' + 
    25                 sitemap_url) 
    26     g.read() 
    27     g.close() 
     48    request = 'http://www.google.com/webmasters/tools/ping?sitemap=' +\ 
     49              urlquote(resurl) 
     50    try: 
     51        # BBB: Change urlopen -> socket.urlopen when 
     52        # compatibility with python2.4 is not important 
     53        g = urlopen(request) 
     54    except urllib2.URLError, e: 
     55        if hasattr(e, 'reason'): 
     56            logger.error('We failed to reach a server. ' 
     57                         'Request: %s. ' 
     58                         'Reason: %s' % (request, e.reason)) 
     59        elif hasattr(e, 'code'): 
     60            logger.error('The server couldn\'t fulfill the request. ' 
     61                         'Request: %s ' 
     62                         'Error code: %s. ' % (request, e.code)) 
     63    else: 
     64        # Reading single byte should be enough for server pinged 
     65        # to get our request, process it and send some response. 
     66        g.read(1) 
     67        g.close() 
    2868 
    2969    return 0 
Note: See TracChangeset for help on using the changeset viewer.