|
1 | 1 | from notebook.notebookapp import NotebookApp |
2 | 2 | from prometheus_client import Gauge |
3 | 3 | from tornado import gen |
| 4 | +from typing import Optional |
4 | 5 |
|
5 | 6 | from nbresuse.metrics import cpu_metrics |
6 | 7 | from nbresuse.metrics import CPUMetrics |
@@ -31,21 +32,25 @@ def __init__(self, nbapp: NotebookApp): |
31 | 32 | @gen.coroutine |
32 | 33 | def __call__(self, *args, **kwargs): |
33 | 34 | metrics = self.apply_memory_limits(memory_metrics()) |
34 | | - TOTAL_MEMORY_USAGE.set(metrics.current_memory) |
35 | | - MAX_MEMORY_USAGE.set(metrics.max_memory) |
| 35 | + if metrics is not None: |
| 36 | + TOTAL_MEMORY_USAGE.set(metrics.current_memory) |
| 37 | + MAX_MEMORY_USAGE.set(metrics.max_memory) |
36 | 38 | if self.config.track_cpu_percent: |
37 | 39 | metrics = self.apply_cpu_limits(cpu_metrics()) |
38 | | - TOTAL_CPU_USAGE.set(metrics.cpu_usage) |
39 | | - MAX_CPU_USAGE.set(metrics.cpu_max) |
40 | | - |
41 | | - def apply_memory_limits(self, metrics: MemoryMetrics) -> MemoryMetrics: |
42 | | - if callable(self.config.mem_limit): |
43 | | - metrics.max_memory = self.config.mem_limit(rss=metrics.max_memory) |
44 | | - elif self.config.mem_limit > 0: # mem_limit is an Int |
45 | | - metrics.max_memory = self.config.mem_limit |
| 40 | + if metrics is not None: |
| 41 | + TOTAL_CPU_USAGE.set(metrics.cpu_usage) |
| 42 | + MAX_CPU_USAGE.set(metrics.cpu_max) |
| 43 | + |
| 44 | + def apply_memory_limits(self, metrics: Optional[MemoryMetrics]) -> Optional[MemoryMetrics]: |
| 45 | + if metrics is not None: |
| 46 | + if callable(self.config.mem_limit): |
| 47 | + metrics.max_memory = self.config.mem_limit(rss=metrics.max_memory) |
| 48 | + elif self.config.mem_limit > 0: # mem_limit is an Int |
| 49 | + metrics.max_memory = self.config.mem_limit |
46 | 50 | return metrics |
47 | 51 |
|
48 | | - def apply_cpu_limits(self, metrics: CPUMetrics) -> CPUMetrics: |
49 | | - if self.config.cpu_limit > 0: |
50 | | - metrics.cpu_max = self.config.cpu_limit |
| 52 | + def apply_cpu_limits(self, metrics: Optional[CPUMetrics]) -> Optional[CPUMetrics]: |
| 53 | + if metrics is not None: |
| 54 | + if self.config.cpu_limit > 0: |
| 55 | + metrics.cpu_max = self.config.cpu_limit |
51 | 56 | return metrics |
0 commit comments