Skip to main content

Provide an arbitrary context object to Flask. Useful for microservice environments.

Project description

Flask-Context
=============

Supply an arbitrary context object to Flask and use it in your application.

After many years of writing apps, we (Real Kinetic) decided that one of the
most pragmatic things you can do for the long term stabilty and maintainability
of your app is to use and pass round a context object that has access to all
the business level state that you need. This should be passed around everywhere
so when debugging you can figure out what request the problem occurred in.

One of the simplest examples is that of a correlation id. Let's imagine a
microservice environment with a single request that comes in from the outside
is potentially handled by one or more services. When you start distributing
requests like that it becomes really hard to debug errors when they occur. It
would be extremely useful if a unique token was used to tie all of the
processing done by the various services together so that any logging aggregation
could make it easy to get a better picture of what happened. This is where
projects like openzipkin come in.

Other examples may include passing round a ``user_id`` for the request.

This library extracts the Flask specifics so the engineer can focus on the
business problem.

Usage
-----

```python
import uuid
from flask import Flask
from flask_context import FlaskContext, current_context


class MyContext(object):
def __init__(self, correlation_id=None):
self.correlation_id = correlation_id or uuid.uuid4().hex


app = Flask(__name__)

flask_ctx = FlaskContext(MyContext, app)


@app.route('/')
def index():
return current_context.correlation_id


if __name__ == '__main__':
app.run('127.0.0.1', 5000)
```

Head on over to ``http://127.0.0.1:5000/'`` and you should see a unique id
everytime you refresh the page.

Development
-----------

Setting up:

```bash
$ mkvirtualenv flask-context
(flask-context) $ pip install -r requirements_dev.txt
```

Running the tests:

```bash
(flask-context) $ nosetests --with-coverage
```

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

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

Source Distribution

Flask-Context-0.1.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

Flask_Context-0.1-py2-none-any.whl (6.8 kB view details)

Uploaded Python 2

File details

Details for the file Flask-Context-0.1.tar.gz.

File metadata

File hashes

Hashes for Flask-Context-0.1.tar.gz
Algorithm Hash digest
SHA256 6fa3e63d4cc301a77bd28d091350086aec94db40523c756ca2c812f49679d731
MD5 9d63ed53a1e6cc08c6cd69fdee2c8b30
BLAKE2b-256 a2eb312e595da93bea0bc8f0c609cd5c4bbd550876319db61cc4c7c4209202f4

See more details on using hashes here.

File details

Details for the file Flask_Context-0.1-py2-none-any.whl.

File metadata

File hashes

Hashes for Flask_Context-0.1-py2-none-any.whl
Algorithm Hash digest
SHA256 7233563f516a070cddeda780c3c69535daca2adef1991cfec33dd1c926c9b5fa
MD5 9e3301257adbc68271532f8691487ed7
BLAKE2b-256 1dcc89e3662a04b7ef742646db210556130f8412de9804a83cfc30ebb234ebf6

See more details on using hashes here.

Supported by

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