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 gunicorns, 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

  • raven for errors

  • werkzeug for thread locals and wsgi utilities

It is designed sepcifically to be used in both development and production, and aims to provide a default set of features out of the box:

  • standard log format, including ISO/UTC timestamps

  • structured logging with python stdlib

  • improved gunicorn access logs, with ms precision UTC timestamps

  • request id tracing

  • standard set of status endpoints for your app

  • easier statsd endpoint configuration

  • sentry/raven middleware (TODO)

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:

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

  • per-thread requests connection pool managment (WIP)

  • automatic statsd metrics for outgoing HTTP requests (WIP)

  • more efficient statsd client management (WIP)

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

  • grok filters for log parsing (WIP)

  • 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

0.6.3 (2016-09-21)

  • fix setuptools entry points, which were typoed into oblivion

0.6.2 (2016-09-21)

  • make gunicorn use proper statsd client

  • log some extra warnings if we try to configure gunicorn things that talisker overiddes

  • better documented public api via __all__

  • first take on some celery helpers

  • some packaging improvements

0.6.1 (2016-09-12)

  • actually do remove old DEBUGLOG backups, as backupCount=0 does not remove any

0.6.0 (2016-09-09)

  • Propagate gunicorn.error log, and remove its default handler.

This allows consistant logging, making the choice in all cases that your gunicorn logs go to the same stream as your other application loglogging, making the choice in all cases that your gunicorn logs go to the same stream as your other application logs.

We issue a warning if the user tries to configure errorlog manually, as it won’t work as expected.

0.5.7 (2016-09-02)

  • Update publishing workflow

  • Add make changelog target

0.5.6 (2016-09-02)

  • more testing release process in prepartion for 0.6

0.5.5 (2016-09-02)

  • testing release process in prepartion for 0.6

0.5.4 (2016-08-10)

  • series of point release to fix various small bugs

0.5.0 (2016-08-10)

  • add grok filters for logstash

  • slight adjustment to logfmt serialisation: talisker now strips “ from tag values. This is due to a limitation in logstash.

0.4.1 (2016-08-05)

  • publish separate py2/py3 wheels, due to dependency differences

  • some doc changes

0.4.0 (2016-08-05)

  • First public release an PyPI.

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.6.3.tar.gz (13.1 kB view details)

Uploaded Source

Built Distributions

talisker-0.6.3-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

talisker-0.6.3-py2-none-any.whl (25.6 kB view details)

Uploaded Python 2

File details

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

File metadata

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

File hashes

Hashes for talisker-0.6.3.tar.gz
Algorithm Hash digest
SHA256 1a78f225fb5340c43bfda57f5c04bc42f0f00694b69eabf61cacfbec354720a3
MD5 24d34bdb38fb8fe14fdb6915f2082d9a
BLAKE2b-256 dbc1c2e380eb706663b71cd9df0ff67686b91a07cf90ec891bf6a06b1b6286b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for talisker-0.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 17c6fb27080587359b26da6170ac2f781e9122b057bbe8b951397c383f0ee03d
MD5 c9be556a9492c1a9673535731a7172bf
BLAKE2b-256 dd1d1f7ec24944cbc1db26377be789247957b6142228da6b93717024c58d8504

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for talisker-0.6.3-py2-none-any.whl
Algorithm Hash digest
SHA256 f2a940df8e2bd64e48faa83d7c2106119363d2f382c286ca818c7007531a205e
MD5 00a533334c44a05b4fca71e7c560643e
BLAKE2b-256 e5c1534095e5ed85649db3304b69f5d171aaee1d3eeff2737975ec0c7d9ee146

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