# HTTP Server-Timing for Python Flask
This is a library including middleware for using
[HTTP Server-Timing](https://www.w3.org/TR/server-timing) with Python. This header
allows a server to send timing information from the backend, such as database
access time, file reads, etc. The timing information can be then be inspected
in the standard browser developer tools:

## Features
* Middleware for injecting the server timing into the request `Context`
and writing the `Server-Timing` header.
* Concurrency-safe structures for easily recording timings of multiple
concurrency tasks.
* Parse `Server-Timing` headers as a client.
* Note: No browser properly supports sending the Server-Timing header as
an [HTTP Trailer](https://tools.ietf.org/html/rfc7230#section-4.4) so
the Middleware only supports a normal header currently.
## Browser Support
Browser support is required to **view** server timings easily. Because server
timings are sent as an HTTP header, there is no negative impact to sending
the header to unsupported browsers.
* **Chrome 65 or higher** is required to properly display server timings
in the devtools.
## Usage
Example usage is shown below. A fully runnable example is available in
the `example/` directory.
```python
from flask import Flask, jsonify
import time
from profiler.profile_manager import ProfileManager
app = Flask(__name__)
profiler = ProfileManager(app, 'debug')
@app.route("/test", methods=["GET"])
def hello():
print 'test start sleep'
profiler.start('App 1')
time.sleep(1)
profiler.stop('App 1')
profiler.start('App 2')
time.sleep(2)
profiler.stop('App 2')
profiler.start('App 3')
time.sleep(3)
profiler.stop('App 3')
profiler.start('App 4')
time.sleep(4)
profiler.stop('App 4')
print 'test stop sleep'
return jsonify({'success':True})
app.run(host="0.0.0.0",port=8080,debug=True)
```
This is a library including middleware for using
[HTTP Server-Timing](https://www.w3.org/TR/server-timing) with Python. This header
allows a server to send timing information from the backend, such as database
access time, file reads, etc. The timing information can be then be inspected
in the standard browser developer tools:

## Features
* Middleware for injecting the server timing into the request `Context`
and writing the `Server-Timing` header.
* Concurrency-safe structures for easily recording timings of multiple
concurrency tasks.
* Parse `Server-Timing` headers as a client.
* Note: No browser properly supports sending the Server-Timing header as
an [HTTP Trailer](https://tools.ietf.org/html/rfc7230#section-4.4) so
the Middleware only supports a normal header currently.
## Browser Support
Browser support is required to **view** server timings easily. Because server
timings are sent as an HTTP header, there is no negative impact to sending
the header to unsupported browsers.
* **Chrome 65 or higher** is required to properly display server timings
in the devtools.
## Usage
Example usage is shown below. A fully runnable example is available in
the `example/` directory.
```python
from flask import Flask, jsonify
import time
from profiler.profile_manager import ProfileManager
app = Flask(__name__)
profiler = ProfileManager(app, 'debug')
@app.route("/test", methods=["GET"])
def hello():
print 'test start sleep'
profiler.start('App 1')
time.sleep(1)
profiler.stop('App 1')
profiler.start('App 2')
time.sleep(2)
profiler.stop('App 2')
profiler.start('App 3')
time.sleep(3)
profiler.stop('App 3')
profiler.start('App 4')
time.sleep(4)
profiler.stop('App 4')
print 'test stop sleep'
return jsonify({'success':True})
app.run(host="0.0.0.0",port=8080,debug=True)
```
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 server-timing-profiler-0.0.2.tar.gz.
File metadata
- Download URL: server-timing-profiler-0.0.2.tar.gz
- Upload date:
- Size: 3.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcbafba5d7eb71662b71e2a24679662be9e493691b707d2a902e2a0026e6206d
|
|
| MD5 |
2fcb524bd004d9fbae38e96d18a438ed
|
|
| BLAKE2b-256 |
7bc0f4b212cb3a29f30f15aba5639b8291d3c0ecb915824cd26bc73517b15192
|