All pastes #59600 Raw Edit

Someone

public text v1 · immutable
#59600 ·published 2006-05-29 14:44 UTC
rendered paste body
#! /usr/bin/python 
# ver 1.2 
import urllib2 
import sys 
import time 
from optparse import OptionParser 

def createOptParser(): 
   parser = OptionParser() 
   parser.add_option("-s", "--server-number", default=5, 
            dest="server_number", 
            help="amount of servers to print, 0 for all") 
   parser.add_option("-v", "--verbose", 
                  action="store_true", dest="verbose", default=False, 
                  help="be verbose") 
   return parser 

def timeCmd(cmd): 
   before = time.time(); 
   try: 
      cmd(); 
   except KeyboardInterrupt, ki: 
      raise ki 
   except Exception, e: 
      print '\tERROR: ', e 
      return 99999999 
   return time.time() - before; 

def talkToServer(serverUrl): 
   opener = urllib2.build_opener() 
   tmp = opener.open(serverUrl).read() 

def getFuncToTime(serverUrl): 
   return lambda : talkToServer(serverUrl) 

def cmpPairBySecond(p1, p2): 
   if p1[1] == p2[1]: return 0 
   if p1[1] < p2[1]: return -1 
   return 1 

if __name__ == "__main__": 
   parser = createOptParser() 
   (options, args) = parser.parse_args() 

   if len(args) != 1: 
      parser.print_help() 
      sys.exit(0) 
    
   fl = open(args[0], 'r') 
   serverToTime = {} 
   print 'Querying servers, it might take some time ' 
   for ln in fl.readlines(): 
      splitted = ln.split('=') 
      if splitted[0].strip() != 'Server': continue 

      serverUrl = splitted[1] 
      if serverUrl[-1] == '\n': serverUrl = serverUrl[0:-1] 
      if not options.verbose: print '*', 
      else:         print serverUrl, '...', 
      #sys.stdout.flush() 
      serverToTime[serverUrl] = timeCmd(getFuncToTime(serverUrl)) 
      if options.verbose: print '\t',serverToTime[serverUrl] 

   items = serverToTime.items() 
   items.sort(cmpPairBySecond) 
   numberOfItemsToShow = int(options.server_number) 
   if numberOfItemsToShow == 0: numberOfItemsToShow = len(items) 
   if len(items) > 0: 
      if not options.verbose: print 
      print '======================================' 
      print 'Servers sorted by time' 
      print '======================================' 
      for i in items[0:numberOfItemsToShow]: 
         print i[0], ': ', i[1]