forked from kmader/dlstudio-binder
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlaunch.py
40 lines (36 loc) · 1.19 KB
/
launch.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import os
import digits, digits.webapp
import argparse
parser = argparse.ArgumentParser(description='DIGITS server')
parser.add_argument(
'-p', '--port',
type=int,
default=5000,
help='Port to run app on (default 5000)'
)
args = vars(parser.parse_args())
base_prefix = '{}proxy/{}/'.format(os.environ['JUPYTERHUB_SERVICE_PREFIX'], args['port'])
digits.webapp.app.debug = False
# binder specific code to make url_for work correctly
class FixScriptName(object):
def __init__(self, app, prefix):
self.app = app
self.prefix = prefix
def __call__(self, environ, start_response):
environ['SCRIPT_NAME'] = self.prefix
return self.app(environ, start_response)
digits.webapp.app.jinja_env.globals['username'] = 'binder_user'
app2 = FixScriptName(digits.webapp.app, base_prefix)
print('Launching Server', digits.webapp.app.config)
from werkzeug.serving import run_simple
import digits.config
import digits.log
try:
if not digits.webapp.scheduler.start():
print 'ERROR: Scheduler would not start'
else:
run_simple('0.0.0.0', args['port'], app2, use_reloader=False)
except KeyboardInterrupt:
pass
finally:
digits.webapp.scheduler.stop()