@@ -131,7 +131,7 @@ def __init__(self, **kwargs):
131131 self .ws_future = Future ()
132132 self .disconnected = False
133133
134- async def _connect (self , kernel_id ):
134+ async def _connect (self , kernel_id , message_callback ):
135135 # websocket is initialized before connection
136136 self .ws = None
137137 self .kernel_id = kernel_id
@@ -147,6 +147,12 @@ async def _connect(self, kernel_id):
147147 self .ws_future = websocket_connect (request )
148148 self .ws_future .add_done_callback (self ._connection_done )
149149
150+ loop = IOLoop .current ()
151+ loop .add_future (
152+ self .ws_future ,
153+ lambda future : self ._read_messages (message_callback )
154+ )
155+
150156 def _connection_done (self , fut ):
151157 if not self .disconnected and fut .exception () is None : # prevent concurrent.futures._base.CancelledError
152158 self .ws = fut .result ()
@@ -185,18 +191,13 @@ async def _read_messages(self, callback):
185191
186192 if not self .disconnected : # if websocket is not disconnected by client, attept to reconnect to Gateway
187193 self .log .info ("Attempting to re-establish the connection to Gateway: {}" .format (self .kernel_id ))
188- self ._connect (self .kernel_id )
189194 loop = IOLoop .current ()
190- loop .add_future (self .ws_future , lambda future : self ._read_messages ( callback ) )
195+ loop .spawn_callback (self ._connect , self .kernel_id , callback )
191196
192197 def on_open (self , kernel_id , message_callback , ** kwargs ):
193198 """Web socket connection open against gateway server."""
194- self ._connect (kernel_id )
195199 loop = IOLoop .current ()
196- loop .add_future (
197- self .ws_future ,
198- lambda future : self ._read_messages (message_callback )
199- )
200+ loop .spawn_callback (self ._connect , kernel_id , message_callback )
200201
201202 def on_message (self , message ):
202203 """Send message to gateway server."""
0 commit comments