This is a current known issue:
It's possible the simple locking described there by p-himik would offer some help, if anyone wants to make a stab at a small PR, it would be appreciated.
On Mar 12, 2018, at 08:42, [email protected] wrote:
You may reproduce the issue using this snippet:
from functools import partial
from random import random
from bokeh.plotting import figure, curdoc
from bokeh.plotting import ColumnDataSource
from bokeh.embed import server_session
doc = curdoc()
source = ColumnDataSource(dict(x=[1, 2], y=[1, 2]))
figure = figure()
figure.circle(x="x", y="y", source=source)
layout = figure
for i in range(10):
time.sleep(random() * 0.3)
stream_data = dict(x=[random() * 5], y=[random() * 5])
#print("producer %s, stream=%s" % (threading.current_thread().getName(), stream_data))
On Saturday, March 10, 2018 at 5:21:19 AM UTC+1, rkop538 wrote:
- I have several threads listening for updates/changes
- When there is an update, the listening thread calls add_next_tick_callback with partial(function_that_streams_the_change, change_value)
Eventually I get an error: "ValueError: Removing a callback twice (or after it's already been run)"
Is there a way to avoid this? I read there is an issue when you send the same function/callback to add_next_tick_callback.
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/162daf68-258e-4f1b-863a-bea7d0555b4d%40continuum.io.
For more options, visit https://groups.google.com/a/continuum.io/d/optout.