Browse code

Compute speed and elapsed time for Multipart uploads

By the way fixes a crash with:
s3cmd put /xyz/big-file s3://bucket/ > /dev/null
Reported by HanJingYu

Michal Ludvig authored on 2012/01/17 12:48:50
Showing 1 changed files
... ...
@@ -752,11 +752,14 @@ class S3(object):
752 752
 
753 753
     def send_file_multipart(self, file, headers, uri, size):
754 754
         chunk_size = self.config.multipart_chunk_size_mb * 1024 * 1024
755
+        timestamp_start = time.time()
755 756
         upload = MultiPartUpload(self, file, uri, headers)
756 757
         upload.upload_all_parts()
757 758
         response = upload.complete_multipart_upload()
758
-        response["speed"] = 0 # XXX
759
+        timestamp_end = time.time()
760
+        response["elapsed"] = timestamp_end - timestamp_start
759 761
         response["size"] = size
762
+        response["speed"] = response["elapsed"] and float(response["size"]) / response["elapsed"] or float(-1)
760 763
         return response
761 764
 
762 765
     def recv_file(self, request, stream, labels, start_position = 0, retries = _max_retries):