##// END OF EJS Templates
add exponential falloff for reconnect...
add exponential falloff for reconnect avoids constant reconnect attempts every 3 seconds forever gives up after 6 tries (last timeout 64s)

File last commit:

r18546:2b2243ed
r18728:cc8e3e36
Show More
handlers.py
48 lines | 1.5 KiB | text/x-python | PythonLexer
Scott Sanderson
BUG: Set file encoding for IPython.html.terminal.handlers.
r18534 #encoding: utf-8
Thomas Kluyver
Basic infrastructure for terminal page
r18480 """Tornado handlers for the terminal emulator."""
# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
Thomas Kluyver
Compatibility fix for Tornado 3.x
r18494 import tornado
Thomas Kluyver
Basic infrastructure for terminal page
r18480 from tornado import web
Thomas Kluyver
Terminal basically working...
r18481 import terminado
Thomas Kluyver
Basic infrastructure for terminal page
r18480 from ..base.handlers import IPythonHandler
class TerminalHandler(IPythonHandler):
Thomas Kluyver
Multiple terminals and conditional initialisation
r18482 """Render the terminal interface."""
Thomas Kluyver
Basic infrastructure for terminal page
r18480 @web.authenticated
Thomas Kluyver
Multiple terminals and conditional initialisation
r18482 def get(self, term_name):
self.write(self.render_template('terminal.html',
ws_path="terminals/websocket/%s" % term_name))
Thomas Kluyver
Basic infrastructure for terminal page
r18480
Thomas Kluyver
Multiple terminals and conditional initialisation
r18482 class NewTerminalHandler(IPythonHandler):
"""Redirect to a new terminal."""
@web.authenticated
def get(self):
name, _ = self.application.terminal_manager.new_named_terminal()
Thomas Kluyver
Use relative URL for redirect in NewTerminalHandler
r18487 self.redirect(name, permanent=False)
Thomas Kluyver
Basic infrastructure for terminal page
r18480
Thomas Kluyver
Add authentication for terminal websockets
r18484 class TermSocket(terminado.TermSocket, IPythonHandler):
def get(self, *args, **kwargs):
if not self.get_current_user():
raise web.HTTPError(403)
Thomas Kluyver
Compatibility fix for Tornado 3.x
r18494
# FIXME: only do super get on tornado ≥ 4
# tornado 3 has no get, will raise 405
if tornado.version_info >= (4,):
return super(TermSocket, self).get(*args, **kwargs)
Thomas Kluyver
Fix terminals with Tornado 3...
r18546
def clear_cookie(self, *args, **kwargs):
"""meaningless for websockets"""
pass
Thomas Kluyver
Compatibility fix for Tornado 3.x
r18494
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
super(TermSocket, self).open(*args, **kwargs)