- Python: >= 3.9
- Dependencies: httpx >= 0.24.0
Install via pip:
pip install ptelemetryfrom ptelemetry import Telemetry
t = Telemetry(write_key='proj_wk_xxxxx')
# Track an event
t.track('feature.used', {'feature': 'export'})
# Track an error
try:
risky_operation()
except Exception as e:
t.error(exception=e)
# Link to a user
t.identify('user_123')t = Telemetry(
write_key='proj_wk_xxxxx', # Required: Your project write key
api_url='https://api.producttelemetry.com', # Optional: API endpoint
disabled=False, # Optional: Disable all telemetry
flush_interval=30.0, # Optional: Seconds between flushes (default: 30)
flush_at=10, # Optional: Events to trigger flush (default: 10)
max_queue_size=1000, # Optional: Max events in queue (default: 1000)
project_slug='my-project' # Optional: Project identifier (default: 'default')
)OPS_WRITE_KEY- Project write key (alternative to constructor arg)OPS_API_URL- API endpoint URL (alternative to constructor arg)
Users can opt out of telemetry via:
Environment Variables:
DO_NOT_TRACK=1- Universal opt-outOPS_TELEMETRY=0- SDK-specific opt-out
Config File:
Create ~/.config/producttelemetry/<project_slug>/config.json:
{
"telemetry": false
}Programmatic:
t = Telemetry(disabled=True)with Telemetry(write_key='proj_wk_xxxxx') as t:
t.track('app.started')
# ... do work
# Automatically calls shutdown() on exit- Check write key is correct
- Verify API URL is reachable
- Check network connectivity
- Ensure
flush()is called before process exit
Check that ~/.config/producttelemetry/<project_slug>/client_id file is writable
Ensure Python 3.9+ is installed:
python --versionEnsure httpx is installed:
pip install httpx>=0.24.0