mirror of
https://github.com/jupyter/notebook.git
synced 2025-02-11 12:30:51 +08:00
add websocket workarounds for tornado 3
WebSocketHandler.get is new in tornado 4
This commit is contained in:
parent
769fe38789
commit
94d6196ef9
@ -1,3 +1,4 @@
|
||||
# coding: utf-8
|
||||
"""Tornado handlers for WebSocket <-> ZMQ sockets."""
|
||||
|
||||
# Copyright (c) IPython Development Team.
|
||||
@ -11,12 +12,6 @@ try:
|
||||
except ImportError:
|
||||
from urlparse import urlparse # Py 2
|
||||
|
||||
try:
|
||||
from http.cookies import SimpleCookie # Py 3
|
||||
except ImportError:
|
||||
from Cookie import SimpleCookie # Py 2
|
||||
import logging
|
||||
|
||||
import tornado
|
||||
from tornado import ioloop
|
||||
from tornado import web
|
||||
@ -24,7 +19,7 @@ from tornado import websocket
|
||||
|
||||
from IPython.kernel.zmq.session import Session
|
||||
from IPython.utils.jsonutil import date_default, extract_dates
|
||||
from IPython.utils.py3compat import PY3, cast_unicode
|
||||
from IPython.utils.py3compat import cast_unicode
|
||||
|
||||
from .handlers import IPythonHandler
|
||||
|
||||
@ -218,13 +213,21 @@ class AuthenticatedZMQStreamHandler(ZMQStreamHandler, IPythonHandler):
|
||||
self.session.session = cast_unicode(self.get_argument('session_id'))
|
||||
else:
|
||||
self.log.warn("No session ID specified")
|
||||
|
||||
return super(AuthenticatedZMQStreamHandler, self).get(*args, **kwargs)
|
||||
# FIXME: only do super get on tornado ≥ 4
|
||||
# tornado 3 has no get, will raise 405
|
||||
if tornado.version_info >= (4,):
|
||||
return super(AuthenticatedZMQStreamHandler, self).get(*args, **kwargs)
|
||||
|
||||
def initialize(self):
|
||||
self.session = Session(config=self.config)
|
||||
|
||||
def open(self, *args, **kwargs):
|
||||
if tornado.version_info < (4,):
|
||||
try:
|
||||
self.get(*self.open_args, **self.open_kwargs)
|
||||
except web.HTTPError:
|
||||
self.close()
|
||||
raise
|
||||
|
||||
# start the pinging
|
||||
if self.ping_interval > 0:
|
||||
|
@ -155,6 +155,7 @@ class ZMQChannelHandler(AuthenticatedZMQStreamHandler):
|
||||
def initialize(self):
|
||||
super(ZMQChannelHandler, self).initialize()
|
||||
self.zmq_stream = None
|
||||
self.kernel_id = None
|
||||
self.kernel_info_channel = None
|
||||
self._kernel_info_future = Future()
|
||||
|
||||
@ -168,7 +169,8 @@ class ZMQChannelHandler(AuthenticatedZMQStreamHandler):
|
||||
super(ZMQChannelHandler, self).open()
|
||||
try:
|
||||
self.create_stream()
|
||||
except web.HTTPError:
|
||||
except web.HTTPError as e:
|
||||
self.log.error("Error opening stream: %s", e)
|
||||
# WebSockets don't response to traditional error codes so we
|
||||
# close the connection.
|
||||
if not self.stream.closed():
|
||||
|
Loading…
Reference in New Issue
Block a user