@@ -102,7 +102,7 @@ def _kernelspecs_endpoint_default(self):
102102 def _kernelspecs_resource_endpoint_default (self ):
103103 return os .environ .get (self .kernelspecs_resource_endpoint_env , self .kernelspecs_resource_endpoint_default_value )
104104
105- connect_timeout_default_value = 60 .0
105+ connect_timeout_default_value = 40 .0
106106 connect_timeout_env = 'JUPYTER_GATEWAY_CONNECT_TIMEOUT'
107107 connect_timeout = Float (default_value = connect_timeout_default_value , config = True ,
108108 help = """The time allowed for HTTP connection establishment with the Gateway server.
@@ -112,7 +112,7 @@ def _kernelspecs_resource_endpoint_default(self):
112112 def connect_timeout_default (self ):
113113 return float (os .environ .get ('JUPYTER_GATEWAY_CONNECT_TIMEOUT' , self .connect_timeout_default_value ))
114114
115- request_timeout_default_value = 60 .0
115+ request_timeout_default_value = 40 .0
116116 request_timeout_env = 'JUPYTER_GATEWAY_REQUEST_TIMEOUT'
117117 request_timeout = Float (default_value = request_timeout_default_value , config = True ,
118118 help = """The time allowed for HTTP request completion. (JUPYTER_GATEWAY_REQUEST_TIMEOUT env var)""" )
@@ -226,18 +226,20 @@ def gateway_enabled(self):
226226
227227 # Ensure KERNEL_LAUNCH_TIMEOUT has a default value.
228228 KERNEL_LAUNCH_TIMEOUT = int (os .environ .get ('KERNEL_LAUNCH_TIMEOUT' , 40 ))
229- os .environ ['KERNEL_LAUNCH_TIMEOUT' ] = str (KERNEL_LAUNCH_TIMEOUT )
230-
231- LAUNCH_TIMEOUT_PAD = int (os .environ .get ('LAUNCH_TIMEOUT_PAD' , 2 ))
232229
233230 def init_static_args (self ):
234231 """Initialize arguments used on every request. Since these are static values, we'll
235232 perform this operation once.
236233
237234 """
238- # Ensure that request timeout is at least "pad" greater than launch timeout.
239- if self .request_timeout < float (GatewayClient .KERNEL_LAUNCH_TIMEOUT + GatewayClient .LAUNCH_TIMEOUT_PAD ):
240- self .request_timeout = float (GatewayClient .KERNEL_LAUNCH_TIMEOUT + GatewayClient .LAUNCH_TIMEOUT_PAD )
235+ # Ensure that request timeout and KERNEL_LAUNCH_TIMEOUT are the same, taking the
236+ # greater value of the two.
237+ if self .request_timeout < float (GatewayClient .KERNEL_LAUNCH_TIMEOUT ):
238+ self .request_timeout = float (GatewayClient .KERNEL_LAUNCH_TIMEOUT )
239+ elif self .request_timeout > float (GatewayClient .KERNEL_LAUNCH_TIMEOUT ):
240+ GatewayClient .KERNEL_LAUNCH_TIMEOUT = int (self .request_timeout )
241+ # Ensure any adjustments are reflected in env.
242+ os .environ ['KERNEL_LAUNCH_TIMEOUT' ] = str (GatewayClient .KERNEL_LAUNCH_TIMEOUT )
241243
242244 self ._static_args ['headers' ] = json .loads (self .headers )
243245 if 'Authorization' not in self ._static_args ['headers' ].keys ():
@@ -492,11 +494,20 @@ class GatewayKernelSpecManager(KernelSpecManager):
492494
493495 def __init__ (self , ** kwargs ):
494496 super (GatewayKernelSpecManager , self ).__init__ (** kwargs )
495- self .base_endpoint = url_path_join (GatewayClient .instance ().url ,
496- GatewayClient .instance ().kernelspecs_endpoint )
497+ base_endpoint = url_path_join (GatewayClient .instance ().url ,
498+ GatewayClient .instance ().kernelspecs_endpoint )
499+
500+ self .base_endpoint = GatewayKernelSpecManager ._get_endpoint_for_user_filter (base_endpoint )
497501 self .base_resource_endpoint = url_path_join (GatewayClient .instance ().url ,
498502 GatewayClient .instance ().kernelspecs_resource_endpoint )
499503
504+ @staticmethod
505+ def _get_endpoint_for_user_filter (default_endpoint ):
506+ kernel_user = os .environ .get ('KERNEL_USERNAME' )
507+ if kernel_user :
508+ return '?user=' .join ([default_endpoint , kernel_user ])
509+ return default_endpoint
510+
500511 def _get_kernelspecs_endpoint_url (self , kernel_name = None ):
501512 """Builds a url for the kernels endpoint
502513
0 commit comments