diff --git a/IPython/html/static/notebook/js/widgets/widget.js b/IPython/html/static/notebook/js/widgets/widget.js
index 8f69a7d..27180c8 100644
--- a/IPython/html/static/notebook/js/widgets/widget.js
+++ b/IPython/html/static/notebook/js/widgets/widget.js
@@ -34,7 +34,6 @@ function(WidgetManager, _, Backbone){
this.widget_manager = widget_manager;
this._buffered_state_diff = {};
this.pending_msgs = 0;
- this.msg_throttle = 3;
this.msg_buffer = null;
this.key_value_lock = null;
this.id = model_id;
@@ -110,7 +109,7 @@ function(WidgetManager, _, Backbone){
// Send buffer if this message caused another message to be
// throttled.
if (this.msg_buffer !== null &&
- this.msg_throttle === this.pending_msgs) {
+ (this.get('msg_throttle') || 3) === this.pending_msgs) {
var data = {method: 'backbone', sync_method: 'update', sync_data: this.msg_buffer};
this.comm.send(data, callbacks);
this.msg_buffer = null;
@@ -179,7 +178,7 @@ function(WidgetManager, _, Backbone){
var callbacks = options.callbacks || this.callbacks();
// Check throttle.
- if (this.pending_msgs >= this.msg_throttle) {
+ if (this.pending_msgs >= (this.get('msg_throttle') || 3)) {
// The throttle has been exceeded, buffer the current msg so
// it can be sent once the kernel has finished processing
// some of the existing messages.
diff --git a/IPython/html/widgets/widget.py b/IPython/html/widgets/widget.py
index 57ccea0..4c576b3 100644
--- a/IPython/html/widgets/widget.py
+++ b/IPython/html/widgets/widget.py
@@ -17,7 +17,7 @@ from contextlib import contextmanager
from IPython.core.getipython import get_ipython
from IPython.kernel.comm import Comm
from IPython.config import LoggingConfigurable
-from IPython.utils.traitlets import Unicode, Dict, Instance, Bool, List, Tuple
+from IPython.utils.traitlets import Unicode, Dict, Instance, Bool, List, Tuple, Int
from IPython.utils.py3compat import string_types
#-----------------------------------------------------------------------------
@@ -103,6 +103,8 @@ class Widget(LoggingConfigurable):
_comm = Instance('IPython.kernel.comm.Comm')
closed = Bool(False)
+ msg_throttle = Int(3, sync=True, help="""Maximum number of msgs the
+ front-end can send before receiving an idle msg from the back-end.""")
keys = List()
def _keys_default(self):