- start asyncio loop explicitly in notebook thread (tornado 4 starts per-thread loops automatically, asyncio doesn’t)
- remove unsupported ‘io_loop=‘ arg in websocket test
application runs fine with tornado 5, just a few test bits needed updating
- add NotebookApp.login_token, used when NotebookApp.password is not set
- store login_token, bool(password) in notebook server-info file
- `jupyter notebook list` shows pasteable URLs with token
General changes:
- notebook servers are now authenticated by default
- first connect with token sets a cookie
- once a user has logged into one server with a token, their browser is logged in to
all subsequent servers on the same system+port until cookie_secret changes
I don't understand how, but I suspect that the threaded server is
somehow involved in the hangs we see after the tests complete. This
marks it as daemonic so that if it somehow escapes it won't keep the
test process alive.
rather than initializing in main and starting in background, which seemed to cause occasional issues.
Also fix checking for dead notebook, which is no longer a subprocess.