Merge pull request #5170 from jdfreder/widget-throttle-trait

Added msg_throttle sync=True widget traitlet
This commit is contained in:
Min RK 2014-02-21 15:32:10 -08:00
commit 612acd2e08
2 changed files with 5 additions and 4 deletions

View File

@ -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.

View File

@ -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):