##// END OF EJS Templates
send status messages when kernel is auto restarted
MinRK -
Show More
@@ -479,6 +479,8 b' class IOPubHandler(AuthenticatedZMQStreamHandler):'
479 return
479 return
480 km = self.application.kernel_manager
480 km = self.application.kernel_manager
481 kernel_id = self.kernel_id
481 kernel_id = self.kernel_id
482 km.add_restart_callback(kernel_id, self.on_kernel_restarted)
483 km.add_restart_callback(kernel_id, self.on_restart_failed, 'dead')
482 try:
484 try:
483 self.iopub_stream = km.connect_iopub(kernel_id)
485 self.iopub_stream = km.connect_iopub(kernel_id)
484 except web.HTTPError:
486 except web.HTTPError:
@@ -493,10 +495,31 b' class IOPubHandler(AuthenticatedZMQStreamHandler):'
493 def on_message(self, msg):
495 def on_message(self, msg):
494 pass
496 pass
495
497
498 def _send_status_message(self, status):
499 msg = self.session.msg("status",
500 {'execution_state': status}
501 )
502 self.write_message(jsonapi.dumps(msg, default=date_default))
503
504 def on_kernel_restarted(self):
505 logging.warn("kernel %s restarted", self.kernel_id)
506 self._send_status_message('restarting')
507
508 def on_restart_failed(self):
509 logging.error("kernel %s restarted failed!", self.kernel_id)
510 self._send_status_message('dead')
511
496 def on_close(self):
512 def on_close(self):
497 # This method can be called twice, once by self.kernel_died and once
513 # This method can be called twice, once by self.kernel_died and once
498 # from the WebSocket close event. If the WebSocket connection is
514 # from the WebSocket close event. If the WebSocket connection is
499 # closed before the ZMQ streams are setup, they could be None.
515 # closed before the ZMQ streams are setup, they could be None.
516 km = self.application.kernel_manager
517 km.remove_restart_callback(
518 self.kernel_id, self.on_kernel_restarted,
519 )
520 km.remove_restart_callback(
521 self.kernel_id, self.on_restart_failed, 'dead',
522 )
500 if self.iopub_stream is not None and not self.iopub_stream.closed():
523 if self.iopub_stream is not None and not self.iopub_stream.closed():
501 self.iopub_stream.on_recv(None)
524 self.iopub_stream.on_recv(None)
502 self.iopub_stream.close()
525 self.iopub_stream.close()
General Comments 0
You need to be logged in to leave comments. Login now