Performance metrics, based on Coda Hale's Yammer metrics
Applipy Metrics is a toolset for performance measurement and statistics, with a signaling mechanism that allows to issue events in cases of unexpected behavior
A gauge metric is an instantaneous reading of a particular value.
Simple interface to increment and decrement a value. For example, this can be used to measure the total number of jobs sent to the queue, as well as the pending (not yet complete) number of jobs in the queue. Simply increment the counter when an operation starts and decrement it when it completes.
Measures the statistical distribution of values in a data stream. Keeps track of minimum, maximum, mean, standard deviation, etc. It also measures median, 75th, 90th, 95th, 98th, 99th, and 99.9th percentiles. An example use case would be for looking at the number of daily logins for 99 percent of your days, ignoring outliers.
Useful when working with APIs. A RegexRegistry allows to group API calls and measure from a single location instead of having to define different timers in different places.
>>> from applipy_metrics.registry import RegexRegistry >>> reg = RegexRegistry(pattern='^/api/(?P<model>)/\d+/(?P<verb>)?$') >>> def rest_api_request(path): ... with reg.timer(path).time(): ... # do stuff >>> print(reg.dump_metrics())
This library exposes an applipy module, if applipy is installed.
The module can be imported at
It binds a
MetricsRegistry instance, so that other modules can declare a
dependency and use it to create metrics.
metrics.clock: fully qualified name of an object with a member function named
time()that returns unix timestamps. Will be used as the registry clock, used for summaries.
metrics.summary.sample_provider: fully qualified name of a function that accepts a clock instance and returns an instance of either
If you want to report your metrics using a
applipy_metrics.reporters.reporter.Reporter instance, simply bind your
reporter provider/instance to the base reporter type. The MetricsModule will
take care of its lifecycle.
The simplest and easiest way to use the Applipy Metrics library.
You can use the
count_calls decorator to count the number of times a function
>>> from applipy_metrics import counter, count_calls >>> @count_calls ... def test(): ... pass ... >>> for i in range(10): ... test() ... >>> print(counter("test_calls").get_count()) 10
You can use the
time_calls decorator to time the execution of a function and
get distribution data from it.
>>> import time >>> from applipy_metrics import summary, time_calls >>> @time_calls ... def test(): ... time.sleep(0.1) ... >>> for i in range(10): ... test() ... >>> print(summary("test_calls").get_snapshot().get_mean()) 0.100820207596
You can also use a timer using the with statement
>>> import time >>> from applipy_metrics import summary, Chronometer >>> with Chronometer(on_stop=lambda x: summary("test").add(x)): ... time.sleep(0.1) >>> print(summary("test").get_snapshot().get_mean()) 0.10114598274230957
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for applipy_metrics-1.2.3-py3-none-any.whl