Python Flask Server-Timing Header Extension
Project description
# Flask Server-Timing Header Extension
A Flask extension to easily add the Server-Timing header to allow supported browsers to show backend performance metrics.
From the [Mozilla Developer site](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Server-Timing):
> The Server-Timing header communicates one or more metrics and descriptions for a given request-response cycle. It is used to surface any backend server timing metrics (e.g. database read/write, CPU time, file system access, etc.) in the developer tools in the user's browser
The Server-Timing specification is a [W3C draft](https://www.w3.org/TR/server-timing)
## Installation
```
pip install flask-server-timing
```
Python versions 2.7 and 3.x are supported with Flask from version 0.10.1.
## Browser Support
Generally all newer, major browsers - excluding IE and Safari - support visualizing the Server-Timing header. For an up-to-date list with specific versions see the [Mozilla Developer](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Server-Timing#Browser_compatibility) site
## Usage
```python
from flask import Flask
import time
# Import extension
from from server_timing import Timing
app = Flask(__name__)
# To initialize the extension simply pass the app to it. If the app is in debug
# mode or the force_debug parameter is True an after-request handler will be added
# to write the actual header.
t = Timing(app, force_debug=True)
@app.route("/examples")
def examples():
# explicitly calling start and stop before and after - keys need to be identical
t.start('done and done')
time.sleep(0.3)
t.stop('done and done')
# context manager support to avoid having to call start and stop explicitly
with t.time('context'):
time.sleep(0.2)
# decorated with name being the key
named_decoration()
# decorated without name so the function is the key
unnamed_decoration()
@t.timer(name='named')
def named_decoration():
time.sleep(0.4)
@t.timer
def unnamed_decoration():
time.sleep(0.5)
app.run(host="0.0.0.0",port=8080)
```
The `example/` directory also contains the following file showing how to time functions in other modules:
```python
import time
# before this file is imported make sure the extension has been initialized with the Flask app
from server_timing import Timing as t
@t.timer
def include():
time.sleep(0.1)
```
A Flask extension to easily add the Server-Timing header to allow supported browsers to show backend performance metrics.
From the [Mozilla Developer site](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Server-Timing):
> The Server-Timing header communicates one or more metrics and descriptions for a given request-response cycle. It is used to surface any backend server timing metrics (e.g. database read/write, CPU time, file system access, etc.) in the developer tools in the user's browser
The Server-Timing specification is a [W3C draft](https://www.w3.org/TR/server-timing)
## Installation
```
pip install flask-server-timing
```
Python versions 2.7 and 3.x are supported with Flask from version 0.10.1.
## Browser Support
Generally all newer, major browsers - excluding IE and Safari - support visualizing the Server-Timing header. For an up-to-date list with specific versions see the [Mozilla Developer](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Server-Timing#Browser_compatibility) site
## Usage
```python
from flask import Flask
import time
# Import extension
from from server_timing import Timing
app = Flask(__name__)
# To initialize the extension simply pass the app to it. If the app is in debug
# mode or the force_debug parameter is True an after-request handler will be added
# to write the actual header.
t = Timing(app, force_debug=True)
@app.route("/examples")
def examples():
# explicitly calling start and stop before and after - keys need to be identical
t.start('done and done')
time.sleep(0.3)
t.stop('done and done')
# context manager support to avoid having to call start and stop explicitly
with t.time('context'):
time.sleep(0.2)
# decorated with name being the key
named_decoration()
# decorated without name so the function is the key
unnamed_decoration()
@t.timer(name='named')
def named_decoration():
time.sleep(0.4)
@t.timer
def unnamed_decoration():
time.sleep(0.5)
app.run(host="0.0.0.0",port=8080)
```
The `example/` directory also contains the following file showing how to time functions in other modules:
```python
import time
# before this file is imported make sure the extension has been initialized with the Flask app
from server_timing import Timing as t
@t.timer
def include():
time.sleep(0.1)
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file flask-server-timing-0.1.2.tar.gz.
File metadata
- Download URL: flask-server-timing-0.1.2.tar.gz
- Upload date:
- Size: 3.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e448683912089ada8d3af78c260687e1b5bfd0381430f8b52f7ff2a931166efa
|
|
| MD5 |
34b0e9f07378d3fe58849f3b5e159a54
|
|
| BLAKE2b-256 |
6c21f14bcfdc7a9554949d2a87a73ce5c1b7802cf359f5fca5ef33f07669eaf8
|