Skip to content

Commit e2618ac

Browse files
authored
Merge pull request #160 from jhgoebbert/feature/support_args
minimize overhead when checking the supported args by RStudio
2 parents e31e3b1 + cc50961 commit e2618ac

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

jupyter_rsession_proxy/__init__.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,10 @@ def db_config(db_dir):
7373
f.close()
7474
return db_config_name
7575

76-
def _support_arg(arg):
76+
def _support_args(args):
7777
ret = subprocess.check_output([get_rstudio_executable('rserver'), '--help'])
78-
return ret.decode().find(arg) != -1
78+
help_output = ret.decode()
79+
return {arg: (help_output.find(f"--{arg}") != -1) for arg in args}
7980

8081
def _get_www_frame_origin(default="same"):
8182
try:
@@ -101,15 +102,33 @@ def _get_cmd(port, unix_socket):
101102
]
102103
# Support at least v1.2.1335 and up
103104

104-
if _support_arg('www-root-path'):
105+
supported_args = _support_args([
106+
'www-root-path',
107+
'server-data-dir',
108+
'database-config-file',
109+
'www-thread-pool-size',
110+
'www-socket',
111+
])
112+
if supported_args['www-root-path']:
105113
cmd.append('--www-root-path={base_url}rstudio/')
106-
if _support_arg('server-data-dir'):
114+
if supported_args['server-data-dir']:
107115
cmd.append(f'--server-data-dir={server_data_dir}')
108-
if _support_arg('database-config-file'):
116+
if supported_args['database-config-file']:
109117
cmd.append(f'--database-config-file={database_config_file}')
110118

119+
if supported_args['www-thread-pool-size']:
120+
thread_pool_size_env = os.getenv('JUPYTER_RSESSION_PROXY_THREAD_POOL_SIZE', None)
121+
try:
122+
if thread_pool_size_env is not None:
123+
thread_pool_size = int(thread_pool_size_env)
124+
if thread_pool_size > 0:
125+
cmd.append('--www-thread-pool-size=' + str(thread_pool_size))
126+
except ValueError:
127+
print("Invalid value for JUPYTER_RSESSION_PROXY_THREAD_POOL_SIZE. Must be an integer.")
128+
pass
129+
111130
if unix_socket != "":
112-
if _support_arg('www-socket'):
131+
if supported_args['www-socket']:
113132
cmd.append('--www-socket={unix_socket}')
114133
else:
115134
raise NotImplementedError(f'rstudio-server does not support requested socket connection')

0 commit comments

Comments
 (0)