Я пытаюсь отображать живые обновления цен, поступающие с канала redis pubsub в сетке в Jupyter. Каждый раз, когда происходит обновление цены, сообщение будет добавлено в конце таблицы. Другими словами, виджет gridview будет привязан к Dataframe, поэтому каждый раз, когда он изменяется, вид grid будет меняться. Идея состоит в том, чтобы получить что-то вроде этого:

Я попытался сделать это, отобразив и очистив вывод. Однако я не получаю потоковую сетку, которая обновляется на месте, а скорее отображаю и очищаю вывод, что очень раздражает.
Вот виджет вывода в одной ячейке юпитера
import ipywidgets as iw
from IPython.display import display
o = iw.Output()
def output_to_widget(df, output_widget):
output_widget.clear_output()
with output_widget:
display(df)
o
Вот код для подписки на redis и обработки сообщения
import redis, json, time
r = redis.StrictRedis(host = HOST, password = PASS, port = PORT, db = DB)
p = r.pubsub(ignore_subscribe_messages=True)
p.subscribe('QUOTES')
mdf = pd.DataFrame()
while True:
message = p.get_message()
if message:
json_msg = json.loads(message['data'])
df = pd.DataFrame([json_msg]).set_index('sym')
mdf = mdf.append(df)
output_to_widget(mdf, o)
time.sleep(0.001)