def check_active_requests(): """Check for any requests with status='waiting'. If there are some, check if the files are ready for download. """ active_requests = jobtracker.query("SELECT * FROM requests " \ "WHERE status='waiting'") for request in active_requests: # Check requested status if DownloaderSPAN512.check_request_done(request): dlm_cout.outs("Restore (GUID: %s) has succeeded. Will create file entries.\n" % request['guid']) create_file_entries(request) else: # dlm_cout.outs("Request (GUID: %s) has failed.\n" \ # "\tDatabase failed to report the data as restored." % request['guid']) # jobtracker.query("UPDATE requests SET status='failed', " \ # "details='Request failed. Why ?', " \ # "updated_at='%s' " \ # "WHERE guid='%s'" % (jobtracker.nowstr(), request['guid'])) query = "SELECT (TO_SECONDS('%s')-TO_SECONDS(created_at)) " \ "AS deltaT_seconds " \ "FROM requests " \ "WHERE guid='%s'" % \ (jobtracker.nowstr(), request['guid']) row = jobtracker.query(query, fetchone=True) #if row['deltaT_seconds']/3600. > config.download.request_timeout: if row/3600. > config.download.request_timeout: dlm_cout.outs("Restore (GUID: %s) is over %d hr old " \ "and still not ready. Marking " \ "it as failed." % \ (request['guid'], config.download.request_timeout)) jobtracker.query("UPDATE requests " \ "SET status='failed', " \ "details='Request took too long (> %d hr)', " \ "updated_at='%s' " \ "WHERE guid='%s'" % \ (config.download.request_timeout, jobtracker.nowstr(), \ request['guid']))