{ "info": { "author": "Simon Davy", "author_email": "simon.davy@canonical.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware", "Topic :: System :: Logging" ], "description": "===========================================\nTalisker - an opinionated WSGI app platform\n===========================================\n\n.. image:: https://img.shields.io/pypi/v/talisker.svg\n :target: https://pypi.python.org/pypi/talisker\n\n.. image:: https://img.shields.io/travis/canonical-ols/talisker.svg\n :target: https://travis-ci.org/canonical-ols/talisker\n\n.. image:: https://readthedocs.org/projects/talisker/badge/?version=latest\n :target: https://readthedocs.org/projects/talisker/?badge=latest\n :alt: Documentation Status\n\n\nTalisker is a runtime for your wsgi app that aims to provide a common\nplatform for your python services.\n\ntl;dr\n-----\n\nSimply run your wsgi app with talisker as if it was gunicorn.::\n\n talisker app:wsgi -c config.py ...\n\nTalisker will wrap your app in a some simple WSGI middleware, and configure\nlogging to output structured logging like so::\n\n logger = logging.getLogger('app')\n logger.info('something happened', extra={'context': 'I haz it'})\n\nwill output::\n\n 2016-01-13 10:24:07.357Z INFO app \"something happened\" svc.context=\"I haz it\" request_id=...\n\nIt also exposes some status endpoints you can use, go to the /_status/\nurl on your app to see them.\n\nThis all works out of the box by using the talisker runner instead of\ngunicorn's, and there are many more features you can use too.\n\n\nElevator Pitch\n--------------\n\nTalisker is based on a number of standard python tools:\n\n - stdlib logging for logs\n - gunicorn for a wsgi runner\n - requests for http requests\n - statsd for metrics (and optionally, `prometheus_client`)\n - sentry for errors\n - werkzeug for thread locals and wsgi utilities\n\nIt also supports additionaly optional tools:\n\n - celery for async tasks\n - prometheus as an alternate metrics tool\n\nIt's main job is to integrate and configure all the above in a single tool, for\nuse in both dev and production, which provides a standard set of features out\nof the box:\n\n - drop-in replacement for gunicorn as a wsgi runner\n - standardised structured logging on top of python stdlib logging\n - request id tracing\n - standard set of status endpoints for your app\n - easier configuration via env vars\n - metrics for *everything*\n - deep sentry integration (WIP)\n\n\nAll the above are available by just using the talisker entry point script,\nrather than gunicorn.\n\nIn addition, with a small amount of effort, your app can benefit from additional features:\n\n - add structured logging tags to your application logs\n - simple deeper nagios checks - just implement a ``/_status/check`` url in your app\n - per-thread requests connection pool management\n\nAdditionally, talisker provides additional tools for integrating with your\ninfrastructure:\n\n - grok filters for log parsing\n - rsyslog templates and config for log shipping (TODO)\n\nTalisker is opinionated, and derived directly from the authors' needs and\nas such not currently very configurable. However, PR's are very welcome!\n\nFor more information, see The Documentation, which should be found at:\n\nhttps://talisker.readthedocs.io", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/canonical-ols/talisker", "keywords": "talisker", "license": "GPL3", "maintainer": "", "maintainer_email": "", "name": "talisker-fork", "package_url": "https://pypi.org/project/talisker-fork/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/talisker-fork/", "project_urls": { "Homepage": "https://github.com/canonical-ols/talisker" }, "release_url": "https://pypi.org/project/talisker-fork/0.10.1/", "requires_dist": [ "Werkzeug (>=0.11.5,<0.13)", "future (>=0.15.2,<0.17)", "gunicorn (<20.0,>=19.5.0)", "ipaddress (>=1.0.16,<2.0)", "raven (>=5.27.0,<7.0)", "requests (<3.0,>=2.10.0)", "statsd (>=3.2.1,<4.0)", "celery (>=3.1.13.0,<5.0); extra == 'celery'", "logging-tree; extra == 'dev'", "pygments; extra == 'dev'", "django (<1.11,>=1.8); extra == 'django'", "blinker (>=1.4,<2.0); extra == 'flask'", "flask (>=0.11,<0.13); extra == 'flask'", "psycopg2 (<3.0,>=2.4.5); extra == 'pg'", "sqlparse (>=0.2); extra == 'pg'", "prometheus-client (<0.1,>=0.0.17); extra == 'prometheus'" ], "requires_python": "", "summary": "A common WSGI stack", "version": "0.10.1" }, "last_serial": 2917256, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "b62b3e2ac22bd115dc5d4563410365d0", "sha256": "306f960bbaa76d7bfd6c75bf06a6a4acf34b86fecdc4cdcffdc3128da487b185" }, "downloads": -1, "filename": "talisker_fork-0.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b62b3e2ac22bd115dc5d4563410365d0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37756, "upload_time": "2017-05-31T12:11:48", "url": "https://files.pythonhosted.org/packages/1e/77/a20e703c61dfb631f441a6f3cec96bcecb13f92ca0b151f485c8283666b6/talisker_fork-0.10.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "940fdd08a8bad3f9c13e25b40925a817", "sha256": "7306584f157653de71a0095405e07d37d29d75b821ccfcdf335dda8d30705399" }, "downloads": -1, "filename": "talisker_fork-0.10.0.tar.gz", "has_sig": false, "md5_digest": "940fdd08a8bad3f9c13e25b40925a817", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23511, "upload_time": "2017-05-31T12:11:50", "url": "https://files.pythonhosted.org/packages/f3/9b/916f7e17a69cbc74501d03461671c3e16cc67895d8ef6f81d92d4bad4493/talisker_fork-0.10.0.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "c01c8f4daaba2238841770e1b0f184e1", "sha256": "8f9cabeba1c721c014d30a294121264cb51eaddd0d885701ec37e122a231102c" }, "downloads": -1, "filename": "talisker_fork-0.10.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c01c8f4daaba2238841770e1b0f184e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39324, "upload_time": "2017-06-01T15:45:31", "url": "https://files.pythonhosted.org/packages/6d/6c/7af82ad3fbe922f8bc5e8a3d908d09ec3cd82f44d4a5b7d6a08999d4442a/talisker_fork-0.10.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "462538e57904160865556715c6561d52", "sha256": "82eec8a6d4359de48f25e8b7a6ed3f6def87ce7567f2cfd85f1f33cd645063b8" }, "downloads": -1, "filename": "talisker-fork-0.10.1.tar.gz", "has_sig": false, "md5_digest": "462538e57904160865556715c6561d52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24128, "upload_time": "2017-06-01T15:45:33", "url": "https://files.pythonhosted.org/packages/f1/77/e3a392d48fc62610539485755423a9cc1f8e554badb70fd2b4e612f699d6/talisker-fork-0.10.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c01c8f4daaba2238841770e1b0f184e1", "sha256": "8f9cabeba1c721c014d30a294121264cb51eaddd0d885701ec37e122a231102c" }, "downloads": -1, "filename": "talisker_fork-0.10.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c01c8f4daaba2238841770e1b0f184e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39324, "upload_time": "2017-06-01T15:45:31", "url": "https://files.pythonhosted.org/packages/6d/6c/7af82ad3fbe922f8bc5e8a3d908d09ec3cd82f44d4a5b7d6a08999d4442a/talisker_fork-0.10.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "462538e57904160865556715c6561d52", "sha256": "82eec8a6d4359de48f25e8b7a6ed3f6def87ce7567f2cfd85f1f33cd645063b8" }, "downloads": -1, "filename": "talisker-fork-0.10.1.tar.gz", "has_sig": false, "md5_digest": "462538e57904160865556715c6561d52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24128, "upload_time": "2017-06-01T15:45:33", "url": "https://files.pythonhosted.org/packages/f1/77/e3a392d48fc62610539485755423a9cc1f8e554badb70fd2b4e612f699d6/talisker-fork-0.10.1.tar.gz" } ] }