Skip to main content

debugtoolbar for aiohttp

Project description

|Build status| |Coverage status|

aiohttp_debugtoolbar provides a debug toolbar for your aiohttp web application. Library is port of pyramid_debugtoolbar and still in early development stages. Basic functionality has been ported:

  • basic panels

  • intercept redirects

  • intercept and pretty print exception

  • interactive python console

  • show source code

https://raw.githubusercontent.com/aio-libs/aiohttp_debugtoolbar/master/demo/aiohttp_debugtoolba_sceenshot.png

Ported Panels

HeaderDebugPanel, PerformanceDebugPanel, TracebackPanel, SettingsDebugPanel, MiddlewaresDebugPanel, VersionDebugPanel, RoutesDebugPanel, RequestVarsDebugPanel, LoggingPanel

Help Needed

Are you coder looking for a project to contribute to python/asyncio libraries? This is the project for you!

Install and Configuration

$ pip install aiohttp_debugtoolbar

In order to plug in aiohttp_debugtoolbar, call aiohttp_debugtoolbar.setup on your app.

import aiohttp_debugtoolbar
app = web.Application(loop=loop)
aiohttp_debugtoolbar.setup(app)

Full Example

import asyncio
import jinja2
import aiohttp_debugtoolbar
import aiohttp_jinja2

from aiohttp import web


@aiohttp_jinja2.template('index.html')
def basic_handler(request):
    return {'title': 'example aiohttp_debugtoolbar!',
            'text': 'Hello aiohttp_debugtoolbar!',
            'app': request.app}


@asyncio.coroutine
def exception_handler(request):
    raise NotImplementedError


@asyncio.coroutine
def init(loop):
    # add aiohttp_debugtoolbar middleware to you application
    app = web.Application(loop=loop)
    # install aiohttp_debugtoolbar
    aiohttp_debugtoolbar.setup(app)

    template = """
    <html>
        <head>
            <title>{{ title }}</title>
        </head>
        <body>
            <h1>{{ text }}</h1>
            <p>
              <a href="{{ app.router['exc_example'].url() }}">
              Exception example</a>
            </p>
        </body>
    </html>
    """
    # install jinja2 templates
    loader = jinja2.DictLoader({'index.html': template})
    aiohttp_jinja2.setup(app, loader=loader)

    # init routes for index page, and page with error
    app.router.add_route('GET', '/', basic_handler, name='index')
    app.router.add_route('GET', '/exc', exception_handler,
                         name='exc_example')

    handler = app.make_handler()
    srv = yield from loop.create_server(handler, '127.0.0.1', 9000)
    print("Server started at http://127.0.0.1:9000")
    return srv, handler


loop = asyncio.get_event_loop()
srv, handler = loop.run_until_complete(init(loop))
try:
    loop.run_forever()
except KeyboardInterrupt:
    loop.run_until_complete(handler.finish_connections())

Thanks!

I’ve borrowed a lot of code from following projects. I highly recommend to check them out:

Play With Demo

https://github.com/aio-libs/aiohttp_debugtoolbar/tree/master/demo

Requirements

CHANGES

0.1.3 (2016-10-27)

  • Fix a link to request info page, sort request information alphabetically #52

0.1.2 (2016-09-27)

  • Fixed empty functions names in performance panel #43 (Thanks @kammala!)

  • Fixed flashing message during page rendering issue #46

0.1.1 (2016-02-21)

  • Fixed a demo

  • Added syntax highlight in traceback view, switched highlighter from highlight.js to prism.js #31

0.1.0 (2016-02-13)

  • Fixed python 3.5 support (Thanks @stormandco!)

  • Added view source button in RoutesDebugPanel (Thanks @stormandco!)

  • Dropped support for Python 3.3 (Thanks @sloria!)

  • Add middleware in setup method (Thanks @sloria!)

  • Fixed bug with interactive console

  • Fixed support for aiohttp>=0.21.1

0.0.5 (2015-09-13)

  • Fixed IPv6 socket family error (Thanks @stormandco!)

0.0.4 (2015-09-05)

  • Fixed support for aiohttp>=0.17. (Thanks @himikof!)

0.0.3 (2015-07-03)

  • Switched template engine from mako to jinja2. (Thanks @iho!)

  • Added custom yield from to track context switches inside coroutine.

  • Implemented panel for collecting request log messages.

  • Disable toolbar code injecting for non web.Response answers (StreamResponse or WebSocketResponse for example) #12

0.0.2 (2015-05-26)

  • Redesign UI look-and-feel

  • Rename toolbar_middleware_factory to just middleware.

0.0.1 (2015-05-18)

  • Initial release.

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

aiohttp_debugtoolbar-0.1.3.tar.gz (445.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiohttp_debugtoolbar-0.1.3-py3-none-any.whl (465.4 kB view details)

Uploaded Python 3

File details

Details for the file aiohttp_debugtoolbar-0.1.3.tar.gz.

File metadata

File hashes

Hashes for aiohttp_debugtoolbar-0.1.3.tar.gz
Algorithm Hash digest
SHA256 19aee8050539cd6eee03e3840c55bbca9127347c5362696e7e1af82151e31c9d
MD5 89f19441f1cc43847b4b670b59635dd1
BLAKE2b-256 b6972dc649e7906d81287d70a1d55a6b777fa592a00840b0a1c3d6d8bf456bcb

See more details on using hashes here.

File details

Details for the file aiohttp_debugtoolbar-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for aiohttp_debugtoolbar-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a77bb704a7d69badcbb3725852fcdec176620cf5ddc56e89e9716689821c15dc
MD5 4fd4578705ebb2b91ae9f0c0a59f8c3a
BLAKE2b-256 0f9f839ebdc20f8b4803a8375fc805ea3d84f7c5bf75e8fff1e85a3dafae4aa0

See more details on using hashes here.

Supported by

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