Skip to main content

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)
```

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask-server-timing-0.1.2.tar.gz (3.3 kB view details)

Uploaded Source

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

Hashes for flask-server-timing-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e448683912089ada8d3af78c260687e1b5bfd0381430f8b52f7ff2a931166efa
MD5 34b0e9f07378d3fe58849f3b5e159a54
BLAKE2b-256 6c21f14bcfdc7a9554949d2a87a73ce5c1b7802cf359f5fca5ef33f07669eaf8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page