In the world of software performance and DevOps, having fast, actionable insights into your web service response times is critical. While there are heavy-duty monitoring tools available, sometimes you just want something dead-simple to test how a specific URL is performing — that’s where perfometrics comes in.
🔍 What is perfometrics?
perfometrics is a minimalistic Python package that lets you measure performance metrics for any HTTP/HTTPS URL , using nothing more than a couple of lines of code.
It’s built on top of pycurl, providing a clean API to track:
- HTTP status code
- DNS resolution time
- TCP connection time
- SSL/TLS handshake time
- Time to First Byte (TTFB)
- Data transfer time
- Total request time
⚙️ Installation
You can install it directly from PyPI:
pip install perfometrics
🚀 How to Use It
import perfometrics.curl as pcurl
url = 'https://example.com'
curl_uptime = pcurl.CurlUptime(url)
metrics = curl_uptime.get_metrics()
print('Metrics for', url)
print('HTTP status code:', metrics['status_code'])
print('Time taken for DNS resolution:', metrics['dns_lookup'], 'seconds')
print('Time taken for establishing TCP connection:', metrics['tcp'], 'seconds')
print('Time taken for SSL/TLS handshake:', metrics['ssl_tls'], 'seconds')
print('Time to First Byte (TTFB):', metrics['ttfb'], 'seconds')
print('Time taken for data transfer:', metrics['data_transfer'], 'seconds')
print('Total time taken for request:', metrics['total'], 'seconds')
curl_uptime.close_session()
✅ The result gives you a breakdown of where your time is being spent in the connection process — ideal for debugging latency issues or verifying optimizations.
💡 Use Cases
- DevOps Monitoring : Benchmark your production endpoints periodically
- CI/CD Testing : Run it in your pipelines to ensure APIs respond within acceptable limits
- Data Collection : Log metrics over time and analyze performance trends
- Lightweight Health Checks : Build quick health monitors using this package
📦 What’s Inside
- A single class: CurlUptime
- One method: .get_metrics() returns a dictionary of timing values
- Optional: .close_session() to clean up the curl handler
No need for extra config or YAMLs. Just import and measure.
📁 Source Code & Documentation
🧠 Final Thoughts
If you’re looking for a dead-simple way to collect performance metrics for your URLs in Python, without setting up a full observability stack, give perfometrics a try.
If you like it, I’d appreciate a ⭐ on GitHub, and feel free to submit issues or PRs with ideas!
Top comments (1)
It’s worth trying