aio-libs / aiohttp-devtools

dev tools for aiohttp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

modify_main_app dont setup aiohttp_debugtoolbar for nested apps

Skorpyon opened this issue · comments

Reproduce:

nested_app = Application()
nested_app['name'] = 'api'

app = Application()
app['name'] = 'main_app'
app.add_subapp('/api', nested_app)

adev runserver .

500 Internal Server Error


Traceback:

Traceback (most recent call last):
  File "/home/anton/virtualenvs/extremedialer/lib/python3.6/site-packages/aiohttp/web_server.py", line 62, in handle_request
    resp = yield from self._handler(request)
  File "/home/anton/virtualenvs/extremedialer/lib/python3.6/site-packages/aiohttp/web.py", line 270, in _handle
    resp = yield from handler(request)
  File "/home/anton/virtualenvs/extremedialer/lib/python3.6/site-packages/aiohttp_debugtoolbar/middlewares.py", line 59, in toolbar_middleware
    toolbar = DebugToolbar(request, panel_classes, global_panel_classes)
  File "/home/anton/virtualenvs/extremedialer/lib/python3.6/site-packages/aiohttp_debugtoolbar/toolbar.py", line 24, in __init__
    panel_inst = panel_class(request)
  File "/home/anton/virtualenvs/extremedialer/lib/python3.6/site-packages/aiohttp_debugtoolbar/panels/traceback.py", line 21, in __init__
    self.exc_history = request.app[APP_KEY]['exc_history']
  File "/home/anton/virtualenvs/extremedialer/lib/python3.6/site-packages/aiohttp/web.py", line 71, in __getitem__
    return self._state[key]
KeyError: 'aiohttp_debugtoolbar'

If manual setup for nested app it works OK

nested_app = Application()
nested_app['name'] = 'api'
aiohttp_debugtoolbar.setup(nested_app)

Is it possible add cheching nested apps and auto setup debug_toolbar for it?

Add to this issue another related: livereload doen't watch for nested apps files changes.

I've tested and livereload works fine.

I've created a PR #40 to fix the issue with debugtoolbar however currently aiohttp-debugtoolbar doesn't support sub-apps so it's not working.

We're removing debugtoolbar now, as it's pretty much impossible to setup correctly automatically within devtools. It should be used and setup explicitly by the user.