Merge pull request #352 from marshalium/cleanup_tempfile

Cleanup model archive tempfile
This commit is contained in:
Félix Voituret
2020-05-07 15:06:44 +02:00
committed by GitHub

View File

@@ -16,6 +16,7 @@
import hashlib import hashlib
import tarfile import tarfile
import os
from tempfile import NamedTemporaryFile from tempfile import NamedTemporaryFile
@@ -96,16 +97,18 @@ class GithubModelProvider(ModelProvider):
with requests.get(url, stream=True) as response: with requests.get(url, stream=True) as response:
response.raise_for_status() response.raise_for_status()
archive = NamedTemporaryFile(delete=False) archive = NamedTemporaryFile(delete=False)
with archive as stream: try:
# Note: check for chunk size parameters ? with archive as stream:
for chunk in response.iter_content(chunk_size=8192): # Note: check for chunk size parameters ?
if chunk: for chunk in response.iter_content(chunk_size=8192):
stream.write(chunk) if chunk:
get_logger().info('Validating archive checksum') stream.write(chunk)
if compute_file_checksum(archive.name) != self.checksum(name): get_logger().info('Validating archive checksum')
raise IOError('Downloaded file is corrupted, please retry') if compute_file_checksum(archive.name) != self.checksum(name):
get_logger().info('Extracting downloaded %s archive', name) raise IOError('Downloaded file is corrupted, please retry')
tar = tarfile.open(name=archive.name) get_logger().info('Extracting downloaded %s archive', name)
tar.extractall(path=path) with tarfile.open(name=archive.name) as tar:
tar.close() tar.extractall(path=path)
finally:
os.unlink(archive.name)
get_logger().info('%s model file(s) extracted', name) get_logger().info('%s model file(s) extracted', name)