python - AWS S3 Boto Download Timing Out on some Jenkins Jobs and Not Others -


the problem: have python script ran via multi-configuration jenkins job. job downloads script , passes parameters it. spawns 10 times because there 10 sets of data being loaded in parallel. on ocasions , not 2 or 3 out of jobs s3 timeout error. i'm not sure why because not same jobs , not time.

error:

downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0124.json.gz downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0125.json.gz downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0126.json.gz downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0127.json.gz downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0128.json.gz downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0129.json.gz downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0130.json.gz downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0131.json.gz downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0132.json.gz downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0133.json.gz downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0134.json.gz downloading: /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0135.json.gz > downloading: > /var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/json_data/wos/20150707/wos_1/wok5_20150410045810_wos_0135.json.gz > traceback (most recent call last):   file > "/var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/es_single_load.py", > line 1094, in <module> >     directory = download_s3(wos_data, 'tr-ips-ses-data',access_key, secret_key)   file > "/var/lib/jenkins/workspace/deploy-es-data/label/swarm/wos/wos_1/es_single_load.py", > line 31, in download_s3 >     l.get_contents_to_filename(d)   file "/usr/lib/python2.7/dist-packages/boto/s3/key.py", line 1712, in > get_contents_to_filename >     response_headers=response_headers)   file "/usr/lib/python2.7/dist-packages/boto/s3/key.py", line 1650, in > get_contents_to_file >     response_headers=response_headers)   file "/usr/lib/python2.7/dist-packages/boto/s3/key.py", line 1482, in > get_file >     query_args=none)   file "/usr/lib/python2.7/dist-packages/boto/s3/key.py", line 1535, in > _get_file_internal >     bytes in self:   file "/usr/lib/python2.7/dist-packages/boto/s3/key.py", line 386, in next >     data = self.resp.read(self.buffersize)   file "/usr/lib/python2.7/dist-packages/boto/connection.py", line 413, in > read >     return http_client.httpresponse.read(self, amt)   file "/usr/lib64/python2.7/httplib.py", line 573, in read >     s = self.fp.read(amt)   file "/usr/lib64/python2.7/socket.py", line 380, in read >     data = self._sock.recv(left)   file "/usr/lib64/python2.7/ssl.py", line 714, in recv >     return self.read(buflen)   file "/usr/lib64/python2.7/ssl.py", line 608, in read >     v = self._sslobj.read(len or 1024) ssl.sslerror: ('the read operation timed out',) build step 'execute shell' marked build > failure finished: failure 

python:

def download_s3(wos,bucket, access_key, secret_key):     # connect bucket     conn = boto.connect_s3(access_key, secret_key)     bucket = conn.get_bucket(bucket)     local_path = os.path.dirname(os.path.realpath(__file__))     bucket_list = bucket.list()     l in bucket_list:         keystring = str(l.key)         d = local_path + '/' + keystring         search_string = '/' + wos + '/'         if search_string in str(l) , '20150707' in str(l):             if str(wos) == 'wos_1' , '/wos_10/' in str(l):                 continue             try:                 print 'downloading: %s' % d                 l.get_contents_to_filename(d)             except oserror:                 if not os.path.exists(d):                     os.makedirs(d)         else:             continue      conn.close()     return d,local_path 


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -