Skip to main content

A common WSGI stack

Project description

https://img.shields.io/pypi/v/talisker.svg https://img.shields.io/travis/canonical-ols/talisker.svg Documentation Status

Talisker is a runtime for your wsgi app that aims to provide a common platform for your python services.

tl;dr

Simply run your wsgi app with talisker as if it was gunicorn.:

talisker app:wsgi -c config.py ...

Talisker will wrap your app in a some simple WSGI middleware, and configure logging to output structured logging like so:

logger = logging.getLogger('app')
logger.info('something happened', extra={'context': 'I haz it'})

will output:

2016-01-13 10:24:07.357Z INFO app "something happened" svc.context="I haz it" request_id=...

It also exposes some status endpoints you can use, go to the /_status/ url on your app to see them.

This all works out of the box by using the talisker runner instead of gunicorn’s, and there are many more features you can use too.

Elevator Pitch

Talisker is based on a number of standard python tools:

  • stdlib logging for logs

  • gunicorn for a wsgi runner

  • requests for http requests

  • statsd for metrics (and optionally, prometheus_client)

  • sentry for errors

  • werkzeug for thread locals and wsgi utilities

It also supports additionaly optional tools:

  • celery for async tasks

  • prometheus as an alternate metrics tool

It’s main job is to integrate and configure all the above in a single tool, for use in both dev and production, which provides a standard set of features out of the box:

  • drop-in replacement for gunicorn as a wsgi runner

  • standardised structured logging on top of python stdlib logging

  • request id tracing

  • standard set of status endpoints for your app

  • easier configuration via env vars

  • metrics for everything

  • deep sentry integration (WIP)

All the above are available by just using the talisker entry point script, rather than gunicorn.

In addition, with a small amount of effort, your app can benefit from additional features:

  • add structured logging tags to your application logs

  • simple deeper nagios checks - just implement a /_status/check url in your app

  • per-thread requests connection pool management

Additionally, talisker provides additional tools for integrating with your infrastructure:

  • grok filters for log parsing

  • rsyslog templates and config for log shipping (TODO)

Talisker is opinionated, and derived directly from the authors’ needs and as such not currently very configurable. However, PR’s are very welcome!

For more information, see The Documentation, which should be found at:

https://talisker.readthedocs.io

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

talisker-0.9.3.tar.gz (20.6 kB view details)

Uploaded Source

Built Distributions

talisker-0.9.3-py3-none-any.whl (36.4 kB view details)

Uploaded Python 3

talisker-0.9.3-py2-none-any.whl (36.4 kB view details)

Uploaded Python 2

File details

Details for the file talisker-0.9.3.tar.gz.

File metadata

  • Download URL: talisker-0.9.3.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for talisker-0.9.3.tar.gz
Algorithm Hash digest
SHA256 0960f35032ba4ad8185b396e74eec98167c6149173a2f8b2f5839f5064fd6cf4
MD5 b8efd8f9f54d7c1085ee230d47e90e16
BLAKE2b-256 2b6a120d46ef1b2e01a808b5d32db5f6e55d6f9ad66d75205e92be4af6f228fd

See more details on using hashes here.

File details

Details for the file talisker-0.9.3-py3-none-any.whl.

File metadata

File hashes

Hashes for talisker-0.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f267b6526399ce6455c34dd6bedfdd1741f22767a2e70ff327ffa2a7f3e9ad6b
MD5 f9b3c868f3c3cdd4da4166badceb69dc
BLAKE2b-256 4440db04e51c56665a791acb510dc92ad502d5383325ab57955d758e13971b63

See more details on using hashes here.

File details

Details for the file talisker-0.9.3-py2-none-any.whl.

File metadata

File hashes

Hashes for talisker-0.9.3-py2-none-any.whl
Algorithm Hash digest
SHA256 ff1424b62dd253fc2b7cdd242978b209a99d783bedeb124c5368afeeb248177f
MD5 defad1d1df5327b9e9ca4f7f17855ea8
BLAKE2b-256 2481e9e6e25010b50841914a7db02d1cccc1c348ae00e1fccbd1af9146f73684

See more details on using hashes here.

Supported by

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