From 9f28590b261c8f8e2384a6a99c105faab3f231bc Mon Sep 17 00:00:00 2001 From: "Antoine R. Dumont (@ardumont)" <antoine.romain.dumont@gmail.com> Date: Fri, 3 Aug 2018 13:25:13 +0200 Subject: [PATCH] swh.loader.pypi: Improve temporary directory bootstrap Related T421 --- swh/loader/pypi/client.py | 7 +------ swh/loader/pypi/loader.py | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/swh/loader/pypi/client.py b/swh/loader/pypi/client.py index 5467382..a7c54fb 100644 --- a/swh/loader/pypi/client.py +++ b/swh/loader/pypi/client.py @@ -48,12 +48,7 @@ class PyPiClient: """ def __init__(self, temp_directory=None, cache=False, cache_dir=None): self.version = __version__ - if not temp_directory: - from tempfile import mkdtemp - self.temp_directory = mkdtemp(dir=temp_directory, - prefix='swh.loader.pypi.client') - else: - self.temp_directory = temp_directory + self.temp_directory = temp_directory self.do_cache = cache if self.do_cache: diff --git a/swh/loader/pypi/loader.py b/swh/loader/pypi/loader.py index 96ec9c6..75bb51e 100644 --- a/swh/loader/pypi/loader.py +++ b/swh/loader/pypi/loader.py @@ -8,6 +8,8 @@ import logging import os import shutil +from tempfile import mkdtemp + from swh.loader.core.utils import clean_dangling_folders from swh.loader.core.loader import SWHLoader from swh.model.from_disk import Directory @@ -21,7 +23,7 @@ from .model import PyPiProject TEMPORARY_DIR_PREFIX_PATTERN = 'swh.loader.pypi.' - +DEBUG_MODE = '** DEBUG MODE **' class PyPiLoader(SWHLoader): CONFIG_BASE_FILENAME = 'loader/pypi' @@ -35,7 +37,13 @@ class PyPiLoader(SWHLoader): def __init__(self): super().__init__(logging_class='swh.loader.pypi.PyPiLoader') self.origin_id = None - self.temp_directory = self.config['temp_directory'] + + temp_directory = self.config['temp_directory'] + os.makedirs(temp_directory, exist_ok=True) + self.temp_directory = mkdtemp( + suffix='-%s' % os.getpid(), + prefix=TEMPORARY_DIR_PREFIX_PATTERN, + dir=temp_directory) self.pypi_client = PyPiClient( temp_directory=self.temp_directory, cache=self.config['cache'], @@ -47,7 +55,12 @@ class PyPiLoader(SWHLoader): in mid-air (OOM killed), we try and clean up dangling files. """ - clean_dangling_folders(self.temp_directory, + if self.debug: + self.log.warn('%s Will not pre-clean up temp dir %s' % ( + DEBUG_MODE, self.temp_directory + )) + return + clean_dangling_folders(self.config['temp_directory'], pattern_check=TEMPORARY_DIR_PREFIX_PATTERN, log=self.log) @@ -56,8 +69,8 @@ class PyPiLoader(SWHLoader): """ if self.debug: - self.log.warn('** DEBUG MODE ** Will not clean up temp dir %s' % ( - self.temp_directory + self.log.warn('%s Will not clean up temp dir %s' % ( + DEBUG_MODE, self.temp_directory )) return if os.path.exists(self.temp_directory): -- GitLab