Example #1
0
def main(c):
   
    #long poll queue containing files to ship to simscore
    rs = q.read(wait_time_seconds=20)
    
    #if long poll returns file,
    if rs:
        #Parse out json to be sent
        jsonSimscore = json.loads(rs.get_body())
        logit(log, '--------------------\n%s\n' %datetime.now())
        logit(log,'Read in file '+jsonSimscore['TestID']+' from queue\n')
        print jsonSimscore['TestID']
        
        trys = 0
                
        #Login if logincookie is expired
        if sim.is_expired_cookie(c):
            c, buf = sim.loginSimscore()
        
        '''POSTING Retry Logic'''
        while True:
            #POST to simscore 
            compute = 'http://simscore.org/simscores-v1/machinereport' #'http://dev.simscore.md3productions.com/simscores-v1/macinereport'
            pp = sim.RESTfields(address=compute, header=['Content-Type: application/json'], values=json.dumps(jsonSimscore))
            c, out = pp.posthttp(c)
            http_response = c.getinfo(c.HTTP_CODE)
            
            #http_response = 100
            print http_response #; print out.getvalue()
            
            
            #if simscore DEFINITELY recieves POST, returns 200, etc:
            if http_response in [200, 202]:
                logit(log,'Message received - HTTP/1.1:%d \n'%http_response)
                sdb_domain.put_attributes(jsonSimscore['TestID'],{'IsSent':True},replace=False)
                
                #delete message from queue.
                d = q.delete_message(rs)
                if d: logit(log,'Deleted from queue\n')
                break
                
            #else if no response, don't receive 200, simscore down, etc:
            elif http_response in range(500,599):
                logit(log,'Simscore error, HTTP/1.1:%d, waiting %d seconds\n%s'%(http_response, sleeptimes[trys], out.getvalue()) )
                trysleeptimes(trys, sleeptimes)
                trys += 1
                
            elif http_response == 409:
                logit(log,'Local error, HTTP: {0}. Attempted to send duplicate test {1}\n'.format(http_response, jsonSimscore['TestID']))
                d = q.delete_message(rs)
                if d: logit(log,'Deleted from queue\n')
                break
            elif http_response == 419:
                logit(log,'Local error, HTTP: {0}. Invalid value in json: {1}\n{2}\n'.format(http_response, jsonSimscore['TestID'], out.getvalue()))
                d = q.delete_message(rs)
                if d: logit(log,'Deleted from queue\n')
                break    
                
            #else if error related to content of post, how post is made, 
            else:
                rs.change_visibility(300) #if having local trouble with it, make invisible for 2 min
                #log&report error and filename
                logit(log, 'Local error, HTTP: '+str(http_response)+'\n'+out.getvalue()+'\nSending email...\n')
                
                #email me
                failmessage = 'Error sending '+jsonSimscore['TestID']+'\n'+'shipSimscore error: %d\n%s\n'%(http_response,out.getvalue())
                #Connect to ses
                ses_conn = boto.connect_ses(aws_ak, aws_sk)
                send_fail(failmessage, ses_conn)
                break

# <codecell>

    
    #perform check on S3    
    '''
    elif mySQS.approx_total_messages(comq)==0:
        
        f = open('/home/ubuntu/logs/lastchecks.log','rw') 
        #If one week has passed:
        if time.time() > int(f.readlines()[0].strip())+3600*24*7:
            leftBehindCheck(30)
            #change the big and little check time to now
            f.write(str(int(time.time()))+'\n'+str(int(time.time())) )
        
        elif time.time() > int(f.readlines()[1].strip())+3600*24:
            leftBehindCheck(7)
            #change the big and little check time to now
            f.write(f.readlines()[0].strip()+'\n'+str(int(time.time())) )
        f.close()
    '''
                    
    return rs, c
Example #2
0
        
        elif time.time() > int(f.readlines()[1].strip())+3600*24:
            leftBehindCheck(7)
            #change the big and little check time to now
            f.write(f.readlines()[0].strip()+'\n'+str(int(time.time())) )
        f.close()
    '''
                    
    return rs, c

# <codecell>

if __name__ == "__main__":
    # Open up log file to write pycurl info to
    #log = open (os.getcwd()+'\\ShipFails.log', 'a')
    log = open ('/home/ubuntu/logs/ShipFails.log', 'a')
    logit(log, '{0}\n{1}\n{2}\n'.format('*'*26,datetime.now(),'Booting up shipSimscore.py'))
    
    # Login to Simscore
    #login = '******'
    c, buf = sim.loginSimscore()
    logit(log, 'Login response: '+str(c.getinfo(c.HTTP_CODE))+'\n'+buf.getvalue()+'\n')
    
    '''Run Eternally'''
    rs = True
    #while rs: #this is changed to while True when eternal server needed
    while True:
        rs, c = main(c)