jupyterhub / jupyter-server-proxy

Jupyter notebook server extension to proxy web services.
https://jupyter-server-proxy.readthedocs.io
BSD 3-Clause "New" or "Revised" License
352 stars 148 forks source link

Blank page while running bokeh server or flask app #115

Open LightnerAndrew opened 5 years ago

LightnerAndrew commented 5 years ago

I am attempting to run a bokeh server behind JupyterHub. When I run the server and navigate to {baseurl}/users/{name}/proxy/{port}/{script_name}, the bokeh server returns GET 200 and it correctly changes the tab name of the {script_name}. However, the HTML is not displayed and the browser remains blank.

I received similar results when running applications via npm and flask applications, thus, I think the issue is related to either the server-proxy or some other configuration.

Package versions:

Because no error messages are generated, I am not sure where to start. Any suggestions would be greatly appreciated.

manics commented 5 years ago

Can you turn on debug logging in Jupyter? This should show all the requests being made, it may be that your app is not aware that it's running under a prefix in which case you should see several 404 errors.

If you can't access the logs you can run jupyter-notebook locally instead.

LightnerAndrew commented 5 years ago

Thanks. With debugging on, when I try to open the link, it returns a 302 when finding the correct user-redirect and then 200 for the bokeh application. When I place an incorrect port number, although the page return Error 500, this error is not reciprocated in the logs. Instead rather than returning a 200, the logs show nothing.

Bokeh also typically returns an error if the issue is related to running under a prefix. It will ask the user to specify --allow-websocket-origin=myurl.com. I ran further debug logging on the bokeh serve command and returned all 200s. The bokeh logging shows that a connection is made to the bokeh server, then due to inactivity, bokeh closes the client connection.

Could it be a firewall issue?

manics commented 5 years ago

I wouldn't have thought it's a firewall issue but it's possible. Can you use your browser dev tools to see what network requests are made when you load bokeh? In Firefox ToolsWeb DeveloperNetwork, other browsers should have something similar.

ian-r-rose commented 5 years ago

@LightnerAndrew Can you try downgrading to tornado 5.1.1? There have been some pretty wide-ranging issues with the recent tornado 6 upgrade, and we may need to make some updates to the server-proxy handler.

LightnerAndrew commented 5 years ago

Hi, @ian-r-rose, thanks for the help. I downgraded tornado to 5.1.1 and the notebook to 5.7.4; the bokeh server now works.

quick note which may or may not be useful or obvious to others: when I downgraded the modules in the JupyterHub terminal using the previous docker image that had tornado 6, I received the same issue. It was not until I downgraded the modules in the docker image that bokeh server rendered through the server-proxy.

dcherian commented 5 years ago

I had a similar issue with dask jupyter dashboard. Downgrading to tornado 5.1.1 fixed it. On tornado 6.0.1, the browser's console showed websocket connection errors. This was on jupyter-server-proxy 1.0.0 (from pip).

dcherian commented 5 years ago

I had a similar issue with dask jupyter dashboard. Downgrading to tornado 5.1.1 fixed it. On tornado 6.0.1, the browser's console showed websocket connection errors. This was on jupyter-server-proxy 1.0.0 (from pip).

dcherian commented 5 years ago

I had a similar issue with dask jupyter dashboard. Downgrading to tornado 5.1.1 fixed it. On tornado 6.0.1, the browser's console showed websocket connection errors. This was on jupyter-server-proxy 1.0.0 (from pip).