Hynek Schlawack
2016-05-20 07:53:13 UTC
Dear fellow friends of asynchronous software,
maybe some of you have already bumped into the Prometheus monitoring system <https://prometheus.io> and liked it like I do (in any case, I’d like to invite you to my PyCon US talk on that topic: <https://us.pycon.org/2016/schedule/presentation/1601/>!)
And while it’s great that Python is a first class citizen due to the official Python client library <https://github.com/prometheus/client_python>, asyncio and Twisted sadly aren’t!
That’s why I’ve just released prometheus_async: https://prometheus-async.readthedocs.io/
First and foremost it wraps the metrics from the official client (you don’t want *me* to do math!) and makes them work properly on coroutines and Deferreds (and makes them well-behaved decorators too but that’s a topic for another day…).
Additionally, it adds a few goodies:
- Metric-exposure via aiohttp that ist much more flexible than what comes with the stdlib-based official solution.
- …that can also be started in a separate thread. That means you can use them in regular, *synchronous* Python 3 applications as well (I instrument all my Pyramid apps like that).
- Integration with service discovery. Listen on port 0 and leave registration to Consul Agent (integration is pluggable, just implement two methods)!
Sadly the goodies are asyncio-only so far. Partly because the official client has some Twisted Web support merged but not released yet. Contributions are very welcome!
Cheers,
Hynek
maybe some of you have already bumped into the Prometheus monitoring system <https://prometheus.io> and liked it like I do (in any case, I’d like to invite you to my PyCon US talk on that topic: <https://us.pycon.org/2016/schedule/presentation/1601/>!)
And while it’s great that Python is a first class citizen due to the official Python client library <https://github.com/prometheus/client_python>, asyncio and Twisted sadly aren’t!
That’s why I’ve just released prometheus_async: https://prometheus-async.readthedocs.io/
First and foremost it wraps the metrics from the official client (you don’t want *me* to do math!) and makes them work properly on coroutines and Deferreds (and makes them well-behaved decorators too but that’s a topic for another day…).
Additionally, it adds a few goodies:
- Metric-exposure via aiohttp that ist much more flexible than what comes with the stdlib-based official solution.
- …that can also be started in a separate thread. That means you can use them in regular, *synchronous* Python 3 applications as well (I instrument all my Pyramid apps like that).
- Integration with service discovery. Listen on port 0 and leave registration to Consul Agent (integration is pluggable, just implement two methods)!
Sadly the goodies are asyncio-only so far. Partly because the official client has some Twisted Web support merged but not released yet. Contributions are very welcome!
Cheers,
Hynek