|
9 | 9 |
|
10 | 10 | _dash_comm = Comm(target_name='jupyter_dash')
|
11 | 11 |
|
| 12 | +_caller = {} |
| 13 | + |
12 | 14 |
|
13 | 15 | def _send_jupyter_config_comm_request():
|
14 | 16 | # If running in an ipython kernel,
|
15 | 17 | # request that the front end extension send us the notebook server base URL
|
16 | 18 | if IPython.get_ipython() is not None:
|
17 | 19 | if _dash_comm.kernel is not None:
|
| 20 | + _caller["parent"] = _dash_comm.kernel.get_parent() |
18 | 21 | _dash_comm.send({
|
19 | 22 | 'type': 'base_url_request'
|
20 | 23 | })
|
21 | 24 |
|
22 | 25 |
|
23 | 26 | @_dash_comm.on_msg
|
24 | 27 | def _receive_message(msg):
|
| 28 | + prev_parent = _caller.get("parent") |
| 29 | + if prev_parent and prev_parent != _dash_comm.kernel.get_parent(): |
| 30 | + _dash_comm.kernel.set_parent([prev_parent["header"]["session"]], prev_parent) |
| 31 | + del _caller["parent"] |
| 32 | + |
25 | 33 | msg_data = msg.get('content').get('data')
|
26 | 34 | msg_type = msg_data.get('type', None)
|
27 | 35 | if msg_type == 'base_url_response':
|
@@ -69,8 +77,8 @@ def capture_event(stream, ident, parent):
|
69 | 77 | break
|
70 | 78 |
|
71 | 79 | if asyncio.iscoroutinefunction(kernel.do_one_iteration):
|
72 | | - nest_asyncio.apply() |
73 | 80 | loop = asyncio.get_event_loop()
|
| 81 | + nest_asyncio.apply(loop) |
74 | 82 | loop.run_until_complete(kernel.do_one_iteration())
|
75 | 83 | else:
|
76 | 84 | kernel.do_one_iteration()
|
|
0 commit comments