Drop Tornado
Closes #656
Thanks @davidbrochart for this. I got a question and a comment.
Thanks for the review @fcollonval. This is still a WIP so I'll make this PR a draft. I can see that the kernel is functional e.g. in JupyterLab, but there are still some issues, at least with shutdown.
Although ipykernel seems functional with these changes, I don't really understand the test failures.
I think the next step is getting rid of the ZMQStream with their on_recv callbacks (which were really specific to Tornado), and just have tasks that receive messages and handle them. I would also like to get rid of the jupyter_client dependency. It seems weird for a "server" to depend on a "client".
I would also like to get rid of the jupyter_client dependency
I wouldn't do that. jupyter-protocol would have been a better name for that repo, since that's really what it defines. It is meant to be a dependency for any Python use of the Jupyter protocol, and that includes ipykernel.
I think the next step is getting rid of the ZMQStream with their on_recv callbacks
👍
a simpler while True: poll/recv/process/send coroutine ought to work, and might even make channel priority easier to ensure.
Closing in favor of #1079.