Skip to content

Commit 25a2420

Browse files
authored
upload/download cache in 64MB chunks (#224)
1 parent 4d6139d commit 25a2420

2 files changed

Lines changed: 14 additions & 18 deletions

File tree

src/api/handlers/job_api.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -434,43 +434,39 @@ def get(self):
434434

435435
return send_file(f)
436436

437-
cache_upload_parser = api.parser()
438-
cache_upload_parser.add_argument('cache.tar.snappy', location='files',
439-
type=FileStorage, required=True)
440-
441437

442438
@api.route("/api/job/cache", doc=False)
443439
class Cache(Resource):
444440

445441
def get(self):
442+
g.release_db()
446443
project_id = g.token['project']['id']
447444
job_name = g.token['job']['name']
448-
449-
template = 'project_%s_job_%s.tar.snappy'
450-
key = template % (project_id, job_name)
445+
filename = request.args.get('filename', None)
446+
template = 'project_%s_job_%s_%s'
447+
key = template % (project_id, job_name, filename)
451448
key = key.replace('/', '_')
452449

453-
g.release_db()
454-
455450
f = storage.download_cache(key)
456451

457452
if not f:
458453
abort(404)
459454

460455
return send_file(f)
461456

462-
@api.expect(cache_upload_parser)
463457
def post(self):
458+
g.release_db()
459+
464460
project_id = g.token['project']['id']
465461
job_name = g.token['job']['name']
466462

467-
template = 'project_%s_job_%s.tar.snappy'
468-
key = template % (project_id, job_name)
469-
key = key.replace('/', '_')
470-
471-
g.release_db()
463+
for f, _ in request.files.items():
464+
template = 'project_%s_job_%s_%s'
465+
key = template % (project_id, job_name, f)
466+
key = key.replace('/', '_')
467+
stream = request.files[f].stream
468+
storage.upload_cache(stream, key)
472469

473-
storage.upload_cache(request.files['cache.tar.snappy'].stream, key)
474470
return jsonify({})
475471

476472

src/job/job.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ def main_run_job(self):
491491
if not self.job['definition'].get('cache', {}).get('data', True):
492492
c.collect("Not downloading cache, because cache.data has been set to false", show=True)
493493
else:
494-
self.get_file_from_api_server("/cache", storage_cache_tar)
494+
self.get_file_from_api_server("/cache", storage_cache_tar, split=True)
495495

496496
if os.path.isfile(storage_cache_tar):
497497
c.collect("Unpacking cache", show=True)
@@ -553,7 +553,7 @@ def main_run_job(self):
553553
file_size = os.stat(storage_cache_tar).st_size
554554

555555
c.collect("Output size: %s kb" % (file_size / 1024), show=True)
556-
self.post_file_to_api_server('/cache', storage_cache_tar)
556+
self.post_file_to_api_server('/cache', storage_cache_tar, split=True)
557557
else:
558558
c.collect("Cache is empty", show=True)
559559
c.collect("", show=True)

0 commit comments

Comments
 (0)