@@ -134,7 +134,7 @@ def __init__(self, **kwargs):
134134 self .ws_future = Future ()
135135 self .disconnected = False
136136
137- async def _connect (self , kernel_id ):
137+ async def _connect (self , kernel_id , message_callback ):
138138 # websocket is initialized before connection
139139 self .ws = None
140140 self .kernel_id = kernel_id
@@ -150,6 +150,12 @@ async def _connect(self, kernel_id):
150150 self .ws_future = websocket_connect (request )
151151 self .ws_future .add_done_callback (self ._connection_done )
152152
153+ loop = IOLoop .current ()
154+ loop .add_future (
155+ self .ws_future ,
156+ lambda future : self ._read_messages (message_callback )
157+ )
158+
153159 def _connection_done (self , fut ):
154160 if not self .disconnected and fut .exception () is None : # prevent concurrent.futures._base.CancelledError
155161 self .ws = fut .result ()
@@ -188,18 +194,13 @@ async def _read_messages(self, callback):
188194
189195 if not self .disconnected : # if websocket is not disconnected by client, attept to reconnect to Gateway
190196 self .log .info ("Attempting to re-establish the connection to Gateway: {}" .format (self .kernel_id ))
191- self ._connect (self .kernel_id )
192197 loop = IOLoop .current ()
193- loop .add_future (self .ws_future , lambda future : self ._read_messages ( callback ) )
198+ loop .spawn_callback (self ._connect , self .kernel_id , callback )
194199
195200 def on_open (self , kernel_id , message_callback , ** kwargs ):
196201 """Web socket connection open against gateway server."""
197- self ._connect (kernel_id )
198202 loop = IOLoop .current ()
199- loop .add_future (
200- self .ws_future ,
201- lambda future : self ._read_messages (message_callback )
202- )
203+ loop .spawn_callback (self ._connect , kernel_id , message_callback )
203204
204205 def on_message (self , message ):
205206 """Send message to gateway server."""
0 commit comments