scorevision: push artifact
Browse files
miner.py
CHANGED
|
@@ -175,16 +175,26 @@ from datetime import datetime, timezone
|
|
| 175 |
from concurrent.futures import ThreadPoolExecutor, as_completed
|
| 176 |
import inspect
|
| 177 |
|
| 178 |
-
# ββ Latency logger (per-request timing
|
| 179 |
import logging as _lat_logging
|
| 180 |
_lat_logger = _lat_logging.getLogger("sv_latency")
|
| 181 |
_lat_logger.setLevel(_lat_logging.INFO)
|
| 182 |
_lat_logger.propagate = False
|
| 183 |
if not _lat_logger.handlers:
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 188 |
|
| 189 |
logger = logging.getLogger(__name__)
|
| 190 |
|
|
|
|
| 175 |
from concurrent.futures import ThreadPoolExecutor, as_completed
|
| 176 |
import inspect
|
| 177 |
|
| 178 |
+
# ββ Latency logger (per-request timing) βββββββββββββββββββββββββββββββββ
|
| 179 |
import logging as _lat_logging
|
| 180 |
_lat_logger = _lat_logging.getLogger("sv_latency")
|
| 181 |
_lat_logger.setLevel(_lat_logging.INFO)
|
| 182 |
_lat_logger.propagate = False
|
| 183 |
if not _lat_logger.handlers:
|
| 184 |
+
try:
|
| 185 |
+
import tempfile as _lat_tempfile
|
| 186 |
+
# Try /home/miner first (Lium), fall back to /tmp (Chutes cloud)
|
| 187 |
+
for _lat_path in ["/home/miner/latency.log", _lat_tempfile.gettempdir() + "/latency.log"]:
|
| 188 |
+
try:
|
| 189 |
+
_lat_fh = _lat_logging.FileHandler(_lat_path)
|
| 190 |
+
_lat_fh.setFormatter(_lat_logging.Formatter(
|
| 191 |
+
"%(asctime)s.%(msecs)03d %(message)s", datefmt="%Y-%m-%d %H:%M:%S"))
|
| 192 |
+
_lat_logger.addHandler(_lat_fh)
|
| 193 |
+
break
|
| 194 |
+
except (OSError, PermissionError):
|
| 195 |
+
continue
|
| 196 |
+
except Exception:
|
| 197 |
+
pass # No file logging β latency still logged via main logger
|
| 198 |
|
| 199 |
logger = logging.getLogger(__name__)
|
| 200 |
|