|
1 | 1 | import contextlib |
2 | 2 | import logging |
3 | 3 | import os |
| 4 | +import shutil |
4 | 5 | import sys |
5 | 6 | import typing |
6 | 7 |
|
|
10 | 11 | from environs import Env |
11 | 12 |
|
12 | 13 | from common.core.cli import healthcheck |
13 | | -from common.core.utils import TemporaryDirectory |
| 14 | +from common.prometheus.constants import DEFAULT_PROMETHEUS_MULTIPROC_DIR |
14 | 15 |
|
15 | 16 | logger = logging.getLogger(__name__) |
16 | 17 |
|
@@ -45,16 +46,25 @@ def ensure_cli_env() -> typing.Generator[None, None, None]: |
45 | 46 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.dev") |
46 | 47 |
|
47 | 48 | # Set up Prometheus' multiprocess mode |
48 | | - if not env.str("PROMETHEUS_MULTIPROC_DIR", ""): |
49 | | - delete = not env.bool("PROMETHEUS_MULTIPROC_DIR_KEEP", False) |
50 | | - prometheus_multiproc_dir_name = ctx.enter_context( |
51 | | - TemporaryDirectory(delete=delete) |
52 | | - ) |
| 49 | + prometheus_multiproc_dir_name = os.environ.setdefault( |
| 50 | + "PROMETHEUS_MULTIPROC_DIR", |
| 51 | + DEFAULT_PROMETHEUS_MULTIPROC_DIR, |
| 52 | + ) |
| 53 | + prometheus_multiproc_dir_keep = env.bool( |
| 54 | + "PROMETHEUS_MULTIPROC_DIR_KEEP", |
| 55 | + default=False, |
| 56 | + ) |
| 57 | + if not prometheus_multiproc_dir_keep: |
| 58 | + shutil.rmtree(prometheus_multiproc_dir_name, ignore_errors=True) |
53 | 59 | logger.info( |
54 | | - "Created %s for Prometheus multi-process mode", |
| 60 | + "Removed %s to ensure a clean state for Prometheus multi-process mode", |
55 | 61 | prometheus_multiproc_dir_name, |
56 | 62 | ) |
57 | | - os.environ["PROMETHEUS_MULTIPROC_DIR"] = prometheus_multiproc_dir_name |
| 63 | + os.makedirs(prometheus_multiproc_dir_name, exist_ok=True) |
| 64 | + logger.info( |
| 65 | + "Created %s for Prometheus multi-process mode", |
| 66 | + prometheus_multiproc_dir_name, |
| 67 | + ) |
58 | 68 |
|
59 | 69 | if "docgen" in sys.argv: |
60 | 70 | os.environ["DOCGEN_MODE"] = "true" |
|
0 commit comments