/opt/imh-python/lib/python3.9/site-packages/prometheus_client
NameSizeModeActions
bridge/-0755rm
openmetrics/-0755rm
twisted/-0755rm
__pycache__/-0755rm
asgi.py16190644editdlrm
context_managers.py23220644editdlrm
core.py8600644editdlrm
decorator.py158020644editdlrm
exposition.py228630644editdlrm
gc_collector.py15130644editdlrm
metrics.py259250644editdlrm
metrics_core.py155380644editdlrm
mmap_dict.py52450644editdlrm
multiprocess.py69320644editdlrm
parser.py71130644editdlrm
platform_collector.py18690644editdlrm
process_collector.py38440644editdlrm
py.typed00644editdlrm
registry.py61960644editdlrm
samples.py15200644editdlrm
utils.py5940644editdlrm
values.py47750644editdlrm
__init__.py16880644editdlrm
Edit: /opt/imh-python/lib/python3.9/site-packages/prometheus_client/asgi.py (1619B)
from typing import Callable from urllib.parse import parse_qs from .exposition import _bake_output from .registry import CollectorRegistry, REGISTRY def make_asgi_app(registry: CollectorRegistry = REGISTRY, disable_compression: bool = False) -> Callable: """Create a ASGI app which serves the metrics from a registry.""" async def prometheus_app(scope, receive, send): assert scope.get("type") == "http" # Prepare parameters params = parse_qs(scope.get('query_string', b'')) accept_header = "Accept: " + ",".join([ value.decode("utf8") for (name, value) in scope.get('headers') if name.decode("utf8").lower() == 'accept' ]) accept_encoding_header = ",".join([ value.decode("utf8") for (name, value) in scope.get('headers') if name.decode("utf8").lower() == 'accept-encoding' ]) # Bake output status, headers, output = _bake_output(registry, accept_header, accept_encoding_header, params, disable_compression) formatted_headers = [] for header in headers: formatted_headers.append(tuple(x.encode('utf8') for x in header)) # Return output payload = await receive() if payload.get("type") == "http.request": await send( { "type": "http.response.start", "status": int(status.split(' ')[0]), "headers": formatted_headers, } ) await send({"type": "http.response.body", "body": output}) return prometheus_app