Exemple #1
0
 def main(self):
     print "ResultFetcher starting up"
     while True:
         t = time.time()
         data = self.r_server.zrangebyscore("Running_Queue", 0, t)
         for d in data:
             self.runParamDict = pickle.loads(d)
             
             if self.runParamDict['ClassType'] == 'Local':
                 j = Job(configDict=self.runParamDict)
                 jobStr = 'local job'
             else:
                 j = RemoteJob(configDict=self.runParamDict)
                 jobStr = 'remote job'
             
             print "Polling %s for '%s'" % (jobStr, self.runParamDict['Filename'])
             
             retCode = j.isFinished()
             if retCode > 0:
                 if retCode == 1: # case: no except
                     print "Job complete for '%s'" % self.runParamDict['Filename']
                     try:
                         j.getReturnData()
                     except AttributeError: # pass if j without getReturnData() e.g. local
                         pass
                 else:
                     print "Exception for '%s'!!!" % self.runParamDict['Filename']
                 self.r_server.rpush("Result_Queue", pickle.dumps(self.runParamDict))
             else:
                 pollTime = time.time() + self.runParamDict['PollPeriod'] * 60
                 self.r_server.zadd("Running_Queue", pickle.dumps(self.runParamDict), pollTime)
             self.runParamDict = None
         self.r_server.zremrangebyscore("Running_Queue", 0, t)
         time.sleep(60) # hard wait (since no blocking method on ordered sets)