示例#1
0
 def write_blob_sha256(self, blob: gcs.Blob, force: bool = False) -> None:
     """
     Calculates a blob's SHA256 and writes the value to the blob's custom
     metadata 'sha256' field.
     """
     current_value = None if blob.metadata is None else blob.metadata.get(
         'sha256')
     log.info('Current SHA256 value: %s', current_value)
     if current_value is None or force:
         file_sha256 = self.calculate_blob_sha256(blob)
         if current_value == file_sha256:
             log.info('Calculated SHA256 matches current value, no change.')
         else:
             log.info('Saving SHA256 value: %s', file_sha256)
             blob.metadata = {'sha256': file_sha256}
             blob.patch()
     else:
         log.info('Blob SHA256 not calculated or changed.')
示例#2
0
    def mark_complete(self, blob: storage.Blob):
        blob.metadata = {"export_completed": True}
        patch_retryer = retry.Retry(
            predicate=retry.if_exception_type(ServiceUnavailable), deadline=60)

        patch_retryer(lambda: blob.patch())()