I have tried multiple versions of this library, and they all have a problem when multiple windows are open (or a page is refreshed).
This makes it impossible to serve a gnuradio for multiple clients which was a big use case for us.
ERROR:bokeh.util.tornado:Error thrown from periodic callback:
ERROR:bokeh.util.tornado:Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/tornado/gen.py", line 526, in callback
result_list.append(f.result())
File "/usr/local/lib/python3.10/dist-packages/bokeh/server/session.py", line 95, in _needs_document_lock_wrapper
result = func(self, *args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/bokeh/server/session.py", line 229, in with_document_locked
return func(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 450, in wrapper
return invoke_with_curdoc(doc, invoke)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 408, in invoke_with_curdoc
return f()
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 449, in invoke
return f(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/bokehgui/waterfall_sink_c.py", line 89, in callback
self.update( )
File "/usr/local/lib/python3.10/dist-packages/bokehgui/waterfall_sink_c.py", line 105, in update
self.waterfall_renderer[i].latest = list(output_items[i])
File "/usr/local/lib/python3.10/dist-packages/bokeh/core/has_props.py", line 230, in __setattr__
return super().__setattr__(name, value)
File "/usr/local/lib/python3.10/dist-packages/bokeh/core/property/descriptors.py", line 285, in __set__
self._set(obj, old, value, setter=setter)
File "/usr/local/lib/python3.10/dist-packages/bokeh/core/property/descriptors.py", line 559, in _set
self._trigger(obj, old, value, hint=hint, setter=setter)
File "/usr/local/lib/python3.10/dist-packages/bokeh/core/property/descriptors.py", line 637, in _trigger
obj.trigger(self.name, old, value, hint, setter)
File "/usr/local/lib/python3.10/dist-packages/bokeh/model/model.py", line 567, in trigger
super().trigger(descriptor.name, old, new, hint=hint, setter=setter)
File "/usr/local/lib/python3.10/dist-packages/bokeh/util/callback_manager.py", line 194, in trigger
self.document.callbacks.notify_change(cast(Model, self), attr, old, new, hint, setter, invoke)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 236, in notify_change
self.trigger_on_change(event)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 378, in trigger_on_change
invoke_with_curdoc(doc, invoke_callbacks)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 408, in invoke_with_curdoc
return f()
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 377, in invoke_callbacks
cb(event)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 263, in <lambda>
self._change_callbacks[receiver] = lambda event: event.dispatch(receiver)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/events.py", line 400, in dispatch
super().dispatch(receiver)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/events.py", line 223, in dispatch
cast(DocumentPatchedMixin, receiver)._document_patched(self)
File "/usr/local/lib/python3.10/dist-packages/bokeh/server/session.py", line 247, in _document_patched
raise RuntimeError("_pending_writes should be non-None when we have a document lock, and we should have the lock when the document changes")
RuntimeError: _pending_writes should be non-None when we have a document lock, and we should have the lock when the document changes
ERROR:bokeh.util.tornado:Error thrown from periodic callback:
ERROR:bokeh.util.tornado:Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/tornado/gen.py", line 526, in callback
result_list.append(f.result())
File "/usr/local/lib/python3.10/dist-packages/bokeh/server/session.py", line 95, in _needs_document_lock_wrapper
result = func(self, *args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/bokeh/server/session.py", line 229, in with_document_locked
return func(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 450, in wrapper
return invoke_with_curdoc(doc, invoke)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 408, in invoke_with_curdoc
return f()
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 449, in invoke
return f(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/bokehgui/waterfall_sink_c.py", line 89, in callback
self.update( )
File "/usr/local/lib/python3.10/dist-packages/bokehgui/waterfall_sink_c.py", line 105, in update
self.waterfall_renderer[i].latest = list(output_items[i])
File "/usr/local/lib/python3.10/dist-packages/bokeh/core/has_props.py", line 230, in __setattr__
return super().__setattr__(name, value)
File "/usr/local/lib/python3.10/dist-packages/bokeh/core/property/descriptors.py", line 285, in __set__
self._set(obj, old, value, setter=setter)
File "/usr/local/lib/python3.10/dist-packages/bokeh/core/property/descriptors.py", line 559, in _set
self._trigger(obj, old, value, hint=hint, setter=setter)
File "/usr/local/lib/python3.10/dist-packages/bokeh/core/property/descriptors.py", line 637, in _trigger
obj.trigger(self.name, old, value, hint, setter)
File "/usr/local/lib/python3.10/dist-packages/bokeh/model/model.py", line 567, in trigger
super().trigger(descriptor.name, old, new, hint=hint, setter=setter)
File "/usr/local/lib/python3.10/dist-packages/bokeh/util/callback_manager.py", line 194, in trigger
self.document.callbacks.notify_change(cast(Model, self), attr, old, new, hint, setter, invoke)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 236, in notify_change
self.trigger_on_change(event)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 378, in trigger_on_change
invoke_with_curdoc(doc, invoke_callbacks)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 408, in invoke_with_curdoc
return f()
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 377, in invoke_callbacks
cb(event)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/callbacks.py", line 263, in <lambda>
self._change_callbacks[receiver] = lambda event: event.dispatch(receiver)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/events.py", line 400, in dispatch
super().dispatch(receiver)
File "/usr/local/lib/python3.10/dist-packages/bokeh/document/events.py", line 223, in dispatch
cast(DocumentPatchedMixin, receiver)._document_patched(self)
File "/usr/local/lib/python3.10/dist-packages/bokeh/server/session.py", line 247, in _document_patched
raise RuntimeError("_pending_writes should be non-None when we have a document lock, and we should have the lock when the document changes")
RuntimeError: _pending_writes should be non-None when we have a document lock, and we should have the lock when the document changes