{"library":"netflix-spectator-py","title":"Netflix Spectator Python Client","description":"netflix-spectator-py is a thin-client library for reporting metrics from Python applications to SpectatorD and the Netflix Atlas Timeseries Database. It is currently at version 1.1.2 and maintains an active release cadence, providing continuous bug fixes and feature enhancements.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install netflix-spectator-py"],"cli":null},"imports":["from spectator import Registry","from spectator import Config","from spectator import GlobalRegistry","from spectator import StopWatch"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from spectator import Registry, Config\nimport time\nimport os\n\n# Configure with optional extra common tags (e.g., for environment, service)\nconfig = Config(extra_common_tags={'env': os.environ.get('SPECTATOR_ENV', 'dev')})\nregistry = Registry(config)\n\n# Create and interact with a counter\nrequest_counter = registry.counter('my_service.request_count')\nrequest_counter.increment()\nprint(f\"Request Count: {request_counter.get()}\")\n\n# Create and interact with a timer\nprocessing_timer = registry.timer('my_service.processing_latency')\nwith processing_timer.start():\n    time.sleep(0.1) # Simulate work\nprint(f\"Processing Latency recorded: {processing_timer.get_count()} events\")\n\n# Create and interact with a gauge (manual update)\ncurrent_items = registry.gauge('my_service.current_items')\ncurrent_items.set(5)\nprint(f\"Current Items: {current_items.get()}\")\n\n# Note: Metrics are typically sent to a SpectatorD agent via UDP by default. Ensure SpectatorD is running.","lang":"python","description":"Initializes a `Registry` with an optional `Config` for common tags, then demonstrates basic usage of `Counter`, `Timer`, and `Gauge` to report metrics. By default, metrics are sent via UDP to a local SpectatorD agent.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"1.1.1","pypi_latest":"1.1.2","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.6,"avg_import_s":0.07,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"netflix-spectator-py","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.05,"mem_mb":2.3,"disk_size":"18.0M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"netflix-spectator-py","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.04,"mem_mb":3.1,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"netflix-spectator-py","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.1,"mem_mb":2.6,"disk_size":"19.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"netflix-spectator-py","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.09,"mem_mb":3.4,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"netflix-spectator-py","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.07,"mem_mb":2.5,"disk_size":"11.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"netflix-spectator-py","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.08,"mem_mb":3.5,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"netflix-spectator-py","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.07,"mem_mb":2.7,"disk_size":"11.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"netflix-spectator-py","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.08,"mem_mb":3.4,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"netflix-spectator-py","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":2.2,"disk_size":"17.5M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"netflix-spectator-py","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.05,"mem_mb":3,"disk_size":"18M"}]}}