Throttling in Bokeh application
Those using Bokeh 2.x will get this error:
AttributeError: unexpected attribute 'callback_policy' to Slider, possible attributes are align, aspect_ratio, background, bar_color, css_classes, default_size, direction, disabled, end, format, height, height_policy, js_event_callbacks, js_property_callbacks, margin, max_height, max_width, min_height, min_width, name, orientation, show_value, sizing_mode, start, step, subscribed_events, tags, title, tooltips, value, value_throttled, visible, width or width_policy
when running this code:
from bokeh.models.widgets import Slider
slider = Slider(callback_policy='mouseup')
The release guide mentions the following about API removals:
bokeh.models.widgets.sliders
callback, callback_throttle, and callback_policy removed from all sliders. Use value for continuous updates and value_throttled for updates only on mouseup
One also has to do the following:
slider.on_change('value_throttled', ...)
For Bokeh 2.0 or newer, simply use a callback on "value_throttled"
:
slider.on_change('value_throttled', ...)
slider.js_on_change('value_throttled', ...)
OLD answer for for Bokeh 1.x
As of Bokeh 1.2, a callback policy applies to both JS callbacks as well as Python callbacks on the server. The value
property always updates unconditionally on every move, but a new value_throttled
property can be watched for changes according to the policy:
slider.callback_policy = "mouseup"
# both of these will respect the callback policy now
slider.js_on_change('value_throttled', ...)
slider.on_change('value_throttled', ...)
Note that the old callback
property is deprecated and will be removed in Bokeh 2.0. All new code should use the general on_change
and js_on_change
mechanisms.