debugtoolbar for aiohttp
Project description
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
Ported Panels
HeaderDebugPanel, PerformanceDebugPanel, TracebackPanel, SettingsDebugPanel, MiddlewaresDebugPanel, VersionDebugPanel, RoutesDebugPanel, RequestVarsDebugPanel
Help Needed
Are you an experienced 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 you have to attach middleware to your aiohttp.web.Application, and call aiohttp_debugtoolbar.setup
import aiohttp_debugtoolbar
app = web.Application(loop=loop,
middlewares=[aiohttp_debugtoolbar.middleware])
aiohttp_debugtoolbar.setup(app)
Full Example
import asyncio
import aiohttp_debugtoolbar
import aiohttp_mako
from aiohttp import web
@aiohttp_mako.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,
middlewares=[aiohttp_debugtoolbar.middleware])
# install aiohttp_debugtoolbar
aiohttp_debugtoolbar.setup(app)
# install mako templates
lookup = aiohttp_mako.setup(app, input_encoding='utf-8',
output_encoding='utf-8',
default_filters=['decode.utf8'])
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>
"""
lookup.put_string('index.html', template)
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())
Play With Demo
https://github.com/aio-libs/aiohttp_debugtoolbar/tree/master/demo
Requirements
Python 3.3+
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for aiohttp_debugtoolbar-0.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8bbd515439556c0de0965a0a9ff01b306e81badf38032f6b7dfbf1e02fb7321f |
|
MD5 | edd35e3ca51903b1e95e88940d3c655e |
|
BLAKE2b-256 | e151da26bd92d83e03463b2a970b3ce445b2eec6fd31ac6471a69f799eafc320 |
Hashes for aiohttp_debugtoolbar-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8086fca2dce97724027f9a8263e00202ee9f849abe6123d2412f839bca8b1d10 |
|
MD5 | 729a03c2e49e5718afe5b2ca70194520 |
|
BLAKE2b-256 | b8fe22e6d9f56c43d366ad08e73daac768e51ad268d0f3eaa5521e00afa91ed7 |