nucliadb-utils 6.4.0.post4146__py3-none-any.whl → 6.4.0.post4161__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nucliadb_utils/nats.py +18 -1
- nucliadb_utils/utilities.py +6 -0
- {nucliadb_utils-6.4.0.post4146.dist-info → nucliadb_utils-6.4.0.post4161.dist-info}/METADATA +3 -3
- {nucliadb_utils-6.4.0.post4146.dist-info → nucliadb_utils-6.4.0.post4161.dist-info}/RECORD +6 -6
- {nucliadb_utils-6.4.0.post4146.dist-info → nucliadb_utils-6.4.0.post4161.dist-info}/WHEEL +1 -1
- {nucliadb_utils-6.4.0.post4146.dist-info → nucliadb_utils-6.4.0.post4161.dist-info}/top_level.txt +0 -0
nucliadb_utils/nats.py
CHANGED
@@ -34,6 +34,7 @@ from nats.js.client import JetStreamContext
|
|
34
34
|
|
35
35
|
from nucliadb_telemetry.errors import capture_exception
|
36
36
|
from nucliadb_telemetry.jetstream import JetStreamContextTelemetry
|
37
|
+
from nucliadb_telemetry.metrics import Counter
|
37
38
|
from nucliadb_telemetry.utils import get_telemetry
|
38
39
|
|
39
40
|
logger = logging.getLogger(__name__)
|
@@ -119,6 +120,7 @@ class NatsConnectionManager:
|
|
119
120
|
service_name: str,
|
120
121
|
nats_servers: list[str],
|
121
122
|
nats_creds: Optional[str] = None,
|
123
|
+
pull_utilization_metrics: Optional[Counter] = None,
|
122
124
|
):
|
123
125
|
self._service_name = service_name
|
124
126
|
self._nats_servers = nats_servers
|
@@ -132,6 +134,7 @@ class NatsConnectionManager:
|
|
132
134
|
self._reconnect_task: Optional[asyncio.Task] = None
|
133
135
|
self._expected_subscriptions: set[str] = set()
|
134
136
|
self._initialized = False
|
137
|
+
self.pull_utilization_metrics = pull_utilization_metrics
|
135
138
|
|
136
139
|
def healthy(self) -> bool:
|
137
140
|
if not self._healthy:
|
@@ -364,15 +367,29 @@ class NatsConnectionManager:
|
|
364
367
|
if cancelled.is_set():
|
365
368
|
break
|
366
369
|
try:
|
370
|
+
if self.pull_utilization_metrics:
|
371
|
+
start_wait = time.monotonic()
|
372
|
+
|
367
373
|
messages = await psub.fetch(batch=1)
|
374
|
+
|
375
|
+
if self.pull_utilization_metrics:
|
376
|
+
received = time.monotonic()
|
377
|
+
self.pull_utilization_metrics.inc({"status": "waiting"}, received - start_wait)
|
378
|
+
|
368
379
|
for message in messages:
|
369
380
|
await cb(message)
|
381
|
+
|
382
|
+
if self.pull_utilization_metrics:
|
383
|
+
processed = time.monotonic()
|
384
|
+
self.pull_utilization_metrics.inc({"status": "processing"}, processed - received)
|
370
385
|
except asyncio.CancelledError:
|
371
386
|
# Handle task cancellation
|
372
387
|
logger.info("Pull subscription consume task cancelled", extra={"subject": subject})
|
373
388
|
break
|
374
389
|
except TimeoutError:
|
375
|
-
|
390
|
+
if self.pull_utilization_metrics:
|
391
|
+
received = time.monotonic()
|
392
|
+
self.pull_utilization_metrics.inc({"status": "waiting"}, received - start_wait)
|
376
393
|
except Exception:
|
377
394
|
logger.exception("Error in pull_subscribe task", extra={"subject": subject})
|
378
395
|
|
nucliadb_utils/utilities.py
CHANGED
@@ -27,6 +27,7 @@ from enum import Enum
|
|
27
27
|
from typing import TYPE_CHECKING, Any, List, Optional, Union, cast
|
28
28
|
|
29
29
|
from nucliadb_protos.writer_pb2_grpc import WriterStub
|
30
|
+
from nucliadb_telemetry.metrics import Counter
|
30
31
|
from nucliadb_utils import featureflagging
|
31
32
|
from nucliadb_utils.aiopynecone.client import PineconeSession
|
32
33
|
from nucliadb_utils.audit.audit import AuditStorage
|
@@ -58,6 +59,10 @@ if TYPE_CHECKING: # pragma: no cover
|
|
58
59
|
|
59
60
|
logger = logging.getLogger(__name__)
|
60
61
|
|
62
|
+
pull_subscriber_utilization = Counter(
|
63
|
+
"nucliadb_pull_subscriber_utilization_seconds", labels={"status": ""}
|
64
|
+
)
|
65
|
+
|
61
66
|
|
62
67
|
class Utility(str, Enum):
|
63
68
|
INGEST = "ingest"
|
@@ -359,6 +364,7 @@ async def start_nats_manager(
|
|
359
364
|
service_name=service_name,
|
360
365
|
nats_servers=nats_servers,
|
361
366
|
nats_creds=nats_creds,
|
367
|
+
pull_utilization_metrics=pull_subscriber_utilization,
|
362
368
|
)
|
363
369
|
await nats_manager.initialize()
|
364
370
|
set_utility(Utility.NATS_MANAGER, nats_manager)
|
{nucliadb_utils-6.4.0.post4146.dist-info → nucliadb_utils-6.4.0.post4161.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: nucliadb_utils
|
3
|
-
Version: 6.4.0.
|
3
|
+
Version: 6.4.0.post4161
|
4
4
|
Summary: NucliaDB util library
|
5
5
|
Author-email: Nuclia <nucliadb@nuclia.com>
|
6
6
|
License: AGPL
|
@@ -27,8 +27,8 @@ Requires-Dist: nats-py[nkeys]>=2.6.0
|
|
27
27
|
Requires-Dist: PyNaCl
|
28
28
|
Requires-Dist: pyjwt>=2.4.0
|
29
29
|
Requires-Dist: mrflagly>=0.2.9
|
30
|
-
Requires-Dist: nucliadb-protos>=6.4.0.
|
31
|
-
Requires-Dist: nucliadb-telemetry>=6.4.0.
|
30
|
+
Requires-Dist: nucliadb-protos>=6.4.0.post4161
|
31
|
+
Requires-Dist: nucliadb-telemetry>=6.4.0.post4161
|
32
32
|
Provides-Extra: cache
|
33
33
|
Requires-Dist: redis>=4.3.4; extra == "cache"
|
34
34
|
Requires-Dist: orjson>=3.6.7; extra == "cache"
|
@@ -7,7 +7,7 @@ nucliadb_utils/exceptions.py,sha256=y_3wk77WLVUtdo-5FtbBsdSkCtK_DsJkdWb5BoPn3qo,
|
|
7
7
|
nucliadb_utils/featureflagging.py,sha256=SYqr31e0_NeOMx6dZgSiDO9VJiV6xxYhM_gWkk8ITTQ,2386
|
8
8
|
nucliadb_utils/grpc.py,sha256=apu0uePnkGHCAT7GRQ9YZfRYyFj26kJ440i8jitbM3U,3314
|
9
9
|
nucliadb_utils/helpers.py,sha256=nPw8yod3hP-pxq80VF8QC36s7ygSg0dBUdfI-LatvCs,1600
|
10
|
-
nucliadb_utils/nats.py,sha256
|
10
|
+
nucliadb_utils/nats.py,sha256=LrUNBPffjK3e_EuF_s2MGmmE7ExOVD9cdi0yZjHNSv4,16167
|
11
11
|
nucliadb_utils/partition.py,sha256=jBgy4Hu5Iwn4gjbPPcthSykwf-qNx-GcLAIwbzPd1d0,1157
|
12
12
|
nucliadb_utils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
13
|
nucliadb_utils/run.py,sha256=Es0_Bu5Yc-LWczvwL6gzWqSwC85RjDCk-0oFQAJi9g4,1827
|
@@ -15,7 +15,7 @@ nucliadb_utils/settings.py,sha256=RnGhEUvwv6faNqALiqDCivvzNOyyXVBflYh_37uNkow,81
|
|
15
15
|
nucliadb_utils/signals.py,sha256=lo_Mk12NIX5Au--3H3WObvDOXq_OMurql2qiC2TnAao,2676
|
16
16
|
nucliadb_utils/store.py,sha256=kQ35HemE0v4_Qg6xVqNIJi8vSFAYQtwI3rDtMsNy62Y,890
|
17
17
|
nucliadb_utils/transaction.py,sha256=z_VeiTIta48rosS2SXMqx86XaavprSMRWf6s6zWIeEs,7920
|
18
|
-
nucliadb_utils/utilities.py,sha256=
|
18
|
+
nucliadb_utils/utilities.py,sha256=w4nsdyiFgZVEq5aBhjzVg176UDJNxfhIEfDbEi8bJdA,15604
|
19
19
|
nucliadb_utils/aiopynecone/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
|
20
20
|
nucliadb_utils/aiopynecone/client.py,sha256=MPyHnDXwhukJr7U3CJh7BpsekfSuOkyM4g5b9LLtzc8,22941
|
21
21
|
nucliadb_utils/aiopynecone/exceptions.py,sha256=fUErx3ceKQK1MUbOnYcZhIzpNe8UVAptZE9JIRDLXDE,4000
|
@@ -57,7 +57,7 @@ nucliadb_utils/tests/gcs.py,sha256=MBMzn_UHU5SU6iILuCsB5zU4umhNcaCw_MKrxZhwvOc,4
|
|
57
57
|
nucliadb_utils/tests/local.py,sha256=cxIfPrKuqs5Ef0nbrVYQQAH2mwc4E0iD9bC2sWegS-c,1934
|
58
58
|
nucliadb_utils/tests/nats.py,sha256=RWHjwqq5esuO7OFbP24yYX1cXnpPLcWJwDUdmwCpH28,1897
|
59
59
|
nucliadb_utils/tests/s3.py,sha256=DACUh3HvgH3BchKFZ9R7RFUzsrg3v9A-cxTcXx4nmvA,3734
|
60
|
-
nucliadb_utils-6.4.0.
|
61
|
-
nucliadb_utils-6.4.0.
|
62
|
-
nucliadb_utils-6.4.0.
|
63
|
-
nucliadb_utils-6.4.0.
|
60
|
+
nucliadb_utils-6.4.0.post4161.dist-info/METADATA,sha256=9cW6zAHR0b3P2YQHwcwyL7kUdoR3QllRFUznTCFI3YE,2205
|
61
|
+
nucliadb_utils-6.4.0.post4161.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
|
62
|
+
nucliadb_utils-6.4.0.post4161.dist-info/top_level.txt,sha256=fE3vJtALTfgh7bcAWcNhcfXkNPp_eVVpbKK-2IYua3E,15
|
63
|
+
nucliadb_utils-6.4.0.post4161.dist-info/RECORD,,
|
{nucliadb_utils-6.4.0.post4146.dist-info → nucliadb_utils-6.4.0.post4161.dist-info}/top_level.txt
RENAMED
File without changes
|