Describe the bug
My Panel dashboard does not render (blank page) when published as a dashboard. console shows bokeh scripts are loaded. No errors in the browser.
The Kubernetes logs for the dashboard server pod show this log:
+ '[' '' ']'
+ '[' -e /opt/app/environment.yml ']'
+ echo 'no environment.yml'
+ '[' '' ']'
+ '[' '' ']'
+ exec start.sh python3 -m jhsingle_native_proxy.main --destport=0 python3 '{-}m' bokeh_root_cmd.main '{presentation_path}' '{--}port={port}' '{--}allow-websocket-origin={origin_host}' --ready-check-path=/ready-check --presentation-path=./panel_test.py --ip=0.0.0.0 --port=8888
no environment.yml
Executing the command: python3 -m jhsingle_native_proxy.main --destport=0 python3 {-}m bokeh_root_cmd.main {presentation_path} {--}port={port} {--}allow-websocket-origin={origin_host} --ready-check-path=/ready-check --presentation-path=./panel_test.py --ip=0.0.0.0 --port=8888
INFO:tornado.application:SuperviseAndProxyHandler http_get 37007
ERROR:tornado.application:Uncaught exception GET /user/matthiasdv/dash-pane/ (10.0.57.3)
HTTPServerRequest(protocol='http', host='10.0.57.17:8888', method='GET', uri='/user/matthiasdv/dash-pane/', version='HTTP/1.1', remote_ip='10.0.57.3')
Traceback (most recent call last):
File "/home/jovyan/.local/lib/python3.8/site-packages/tornado/web.py", line 1704, in _execute
result = await result
File "/opt/conda/lib/python3.8/site-packages/jhsingle_native_proxy/websocket.py", line 103, in get
return await self.http_get(*args, **kwargs)
File "/opt/conda/lib/python3.8/site-packages/jhsingle_native_proxy/proxyhandlers.py", line 724, in http_get
return await self.proxy(self.port, path)
File "/opt/conda/lib/python3.8/site-packages/jhsingle_native_proxy/proxyhandlers.py", line 718, in proxy
return await self.oauth_proxy(port, path)
TypeError: object NoneType can't be used in 'await' expression
INFO:tornado.application:SuperviseAndProxyHandler http_get 37007
ERROR:tornado.application:Uncaught exception GET /user/matthiasdv/dash-pane/ (10.132.0.46)
HTTPServerRequest(protocol='https', host='nest-dev.kondensator.io', method='GET', uri='/user/matthiasdv/dash-pane/', version='HTTP/1.1', remote_ip='10.132.0.46')
Traceback (most recent call last):
File "/home/jovyan/.local/lib/python3.8/site-packages/tornado/web.py", line 1704, in _execute
result = await result
File "/opt/conda/lib/python3.8/site-packages/jhsingle_native_proxy/websocket.py", line 103, in get
return await self.http_get(*args, **kwargs)
File "/opt/conda/lib/python3.8/site-packages/jhsingle_native_proxy/proxyhandlers.py", line 724, in http_get
return await self.proxy(self.port, path)
File "/opt/conda/lib/python3.8/site-packages/jhsingle_native_proxy/proxyhandlers.py", line 718, in proxy
return await self.oauth_proxy(port, path)
TypeError: object NoneType can't be used in 'await' expression
INFO:tornado.application:Logged-in user {'kind': 'user', 'name': 'matthiasdv', 'admin': True, 'groups': [], 'server': '/user/matthiasdv/', 'pending': None, 'created': '2020-07-15T18:18:39.366713Z', 'last_activity': '2021-01-15T20:06:45.256425Z', 'servers': None}
INFO:tornado.application:SuperviseAndProxyHandler http_get 37007
INFO:tornado.application:['python3', '-m', 'bokeh_root_cmd.main', '/home/jovyan/./panel_test.py', '--port=37007', '--allow-websocket-origin=nest-dev.kondensator.io']
INFO:tornado.application:SuperviseAndProxyHandler http_get 37007 static/js/bokeh.min.js
INFO:tornado.application:SuperviseAndProxyHandler http_get 37007 static/js/bokeh-tables.min.js
INFO:tornado.application:SuperviseAndProxyHandler http_get 37007 static/js/bokeh-widgets.min.js
INFO:tornado.application:SuperviseAndProxyHandler http_get 37007 static/extensions/panel/panel.min.js
INFO:tornado.application:Trying to establish websocket connection to ws://localhost:37007/ws
INFO:tornado.application:Websocket connection established to ws://localhost:37007/ws
INFO:tornado.application:Client sent subprotocols: ['bokeh', 'eyJzZXNzaW9uX2lkIjogIjVLZ1Z2WERudWNlNmc1Q2MxSXdOc0RNb3NjWVJmUWxKeXp1eUoyT2lmVWhlIiwgInNlc3Npb25fZXhwaXJ5IjogMTYxMDc0MTUwNiwgImhlYWRlcnMiOiB7IlgtU2NoZW1lIjogImh0dHBzIiwgIlgtUmVhbC1JcCI6ICIxMC4xMzIuMC40NiIsICJYLUZvcndhcmRlZC1TZXJ2ZXIiOiAiYXV0b2h0dHBzLTU1OWJjZjRmODctbDZ2eG4iLCAiWC1Gb3J3YXJkZWQtUHJvdG8iOiAiaHR0cHMsaHR0cCIsICJYLUZvcndhcmRlZC1Qb3J0IjogIjQ0Myw4MCIsICJYLUZvcndhcmRlZC1Ib3N0IjogIm5lc3QtZGV2LmtvbmRlbnNhdG9yLmlvIiwgIlgtRm9yd2FyZGVkLUZvciI6ICIxMC4xMzIuMC40NiwxMC4wLjQ3LjIiLCAiVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyI6ICIxIiwgIlNlYy1GZXRjaC1Vc2VyIjogIj8xIiwgIlNlYy1GZXRjaC1TaXRlIjogInNhbWUtb3JpZ2luIiwgIlNlYy1GZXRjaC1Nb2RlIjogIm5hdmlnYXRlIiwgIlNlYy1GZXRjaC1EZXN0IjogImRvY3VtZW50IiwgIlNlYy1DaC1VYS1Nb2JpbGUiOiAiPzAiLCAiU2VjLUNoLVVhIjogIlwiR29vZ2xlIENocm9tZVwiO3Y9XCI4N1wiLCBcIiBOb3Q7QSBCcmFuZFwiO3Y9XCI5OVwiLCBcIkNocm9taXVtXCI7dj1cIjg3XCIiLCAiUmVmZXJlciI6ICJodHRwczovL25lc3QtZGV2LmtvbmRlbnNhdG9yLmlvL2h1Yi9kYXNoYm9hcmRzL3BhbmUiLCAiQ29va2llIjogImp1cHl0ZXJodWItdXNlci1tYXR0aGlhc2R2LWRhc2gtcGFuZT0yfDE6MHwxMDoxNjEwNzQxMjA1fDM2Omp1cHl0ZXJodWItdXNlci1tYXR0aGlhc2R2LWRhc2gtcGFuZXw0MDpXakJNWmxOVWEzcHZSWGRzUjNWRGFFRkxURFJxV1dOdFpYaFFXRTVvfDAyYmU4MjEwODAwNjViNDU5YzcxNjA0ZjBlNWQzOGU1YTE5MTk1MmZiOGI5NzExZTFhOGZjMTQ4ZGM4MTE2ZGQ7IGp1cHl0ZXJodWItdXNlci1tYXR0aGlhc2R2PVwiMnwxOjB8MTA6MTYxMDc0MTE4NnwyNjpqdXB5dGVyaHViLXVzZXItbWF0dGhpYXNkdnw0NDpOamd3TVdFNU9XWXpNelk0TkRGaVpqaGxaV0pqWlRoaVptVTNZVEkyWW1ZPXw1Y2M1MDRlZDIyYjM5ZTYyMGM1YmI1N2EzMzdjYzU1MmZlOTYyYTkyZGY0MWUxZWE4MDQ4MTAzYzU5NTcwYTBjXCI7IGp1cHl0ZXJodWItc2Vzc2lvbi1pZD1mMjEyNDg1NWRiZjc0NzEwYjI3NTgzZDBhZGI3NzQ5ODsgX3hzcmY9Mnw5NzRiOTMwN3w0Y2Y5ZWYxN2EzOTA3MmUwY2EyNWFiZmU5NjQ5MjRhOHwxNjEwMzgyMDgxIiwgIkFjY2VwdC1MYW5ndWFnZSI6ICJlbi1HQixlbi1VUztxPTAuOSxlbjtxPTAuOCIsICJBY2NlcHQtRW5jb2RpbmciOiAiZ3ppcCIsICJBY2NlcHQiOiAidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC45IiwgIlVzZXItQWdlbnQiOiAiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzg3LjAuNDI4MC44OCBTYWZhcmkvNTM3LjM2IiwgIkhvc3QiOiAibmVzdC1kZXYua29uZGVuc2F0b3IuaW8iLCAiQ29ubmVjdGlvbiI6ICJjbG9zZSIsICJYLUZvcndhcmRlZC1Db250ZXh0IjogIi91c2VyL21hdHRoaWFzZHYvZGFzaC1wYW5lL21haW5wcm9jZXNzIiwgIlgtUHJveHljb250ZXh0cGF0aCI6ICIvdXNlci9tYXR0aGlhc2R2L2Rhc2gtcGFuZS9tYWlucHJvY2VzcyJ9LCAiY29va2llcyI6IHsianVweXRlcmh1Yi11c2VyLW1hdHRoaWFzZHYtZGFzaC1wYW5lIjogIjJ8MTowfDEwOjE2MTA3NDEyMDV8MzY6anVweXRlcmh1Yi11c2VyLW1hdHRoaWFzZHYtZGFzaC1wYW5lfDQwOldqQk1abE5VYTNwdlJYZHNSM1ZEYUVGTFREUnFXV050WlhoUVdFNW98MDJiZTgyMTA4MDA2NWI0NTljNzE2MDRmMGU1ZDM4ZTVhMTkxOTUyZmI4Yjk3MTFlMWE4ZmMxNDhkYzgxMTZkZCIsICJqdXB5dGVyaHViLXVzZXItbWF0dGhpYXNkdiI6ICIyfDE6MHwxMDoxNjEwNzQxMTg2fDI2Omp1cHl0ZXJodWItdXNlci1tYXR0aGlhc2R2fDQ0Ok5qZ3dNV0U1T1dZek16WTROREZpWmpobFpXSmpaVGhpWm1VM1lUSTJZbVk9fDVjYzUwNGVkMjJiMzllNjIwYzViYjU3YTMzN2NjNTUyZmU5NjJhOTJkZjQxZTFlYTgwNDgxMDNjNTk1NzBhMGMiLCAianVweXRlcmh1Yi1zZXNzaW9uLWlkIjogImYyMTI0ODU1ZGJmNzQ3MTBiMjc1ODNkMGFkYjc3NDk4IiwgIl94c3JmIjogIjJ8OTc0YjkzMDd8NGNmOWVmMTdhMzkwNzJlMGNhMjVhYmZlOTY0OTI0YTh8MTYxMDM4MjA4MSJ9fQ']
INFO:tornado.application:SuperviseAndProxyHandler http_get 37007
INFO:tornado.application:Trying to establish websocket connection to ws://localhost:37007/ws
INFO:tornado.application:Websocket connection established to ws://localhost:37007/ws
To Reproduce
This is the .py file that produces the error:
Describe the bug My Panel dashboard does not render (blank page) when published as a dashboard. console shows bokeh scripts are loaded. No errors in the browser.
The Kubernetes logs for the dashboard server pod show this log:
To Reproduce This is the .py file that produces the error:
https://gist.github.com/matthiasdv/03430b5d1609857d7b482c6e26386516
pip freeze output:
Configuration versions:
Jupyterhub Helm chart 0.9.0 CDS 0.4.3 Z2Hjupyterhub on Kubernetes, Google Cloud Engine Using ReadMany filesystem
jupyterhub conf:
Any directions are appreciated!