служба боке работает, но не может получить доступ в браузере

Я установил боке и загрузил myapp.py с официальной страницы (http://docs.bokeh.org/en/latest/docs/user_guide/server.html), который выглядит так.

# myapp.py

from random import random

from bokeh.layouts import column
from bokeh.models import Button
from bokeh.palettes import RdYlBu3
from bokeh.plotting import figure, curdoc

# create a plot and style its properties
p = figure(x_range=(0, 100), y_range=(0, 100), toolbar_location=None)
p.border_fill_color = 'black'
p.background_fill_color = 'black'
p.outline_line_color = None
p.grid.grid_line_color = None

# add a text renderer to our plot (no data yet)
r = p.text(x=[], y=[], text=[], text_color=[], text_font_size="20pt",
           text_baseline="middle", text_align="center")

i = 0

ds = r.data_source

# create a callback that will add a number in a random location
def callback():
    global i

    # BEST PRACTICE --- update .data in one step with a new dict
    new_data = dict()
    new_data['x'] = ds.data['x'] + [random()*70 + 15]
    new_data['y'] = ds.data['y'] + [random()*70 + 15]
    new_data['text_color'] = ds.data['text_color'] + [RdYlBu3[i%3]]
    new_data['text'] = ds.data['text'] + [str(i)]
    ds.data = new_data

    i = i + 1

# add a button widget and configure with the call back
button = Button(label="Press Me")
button.on_click(callback)

# put the button and plot in a layout and add to the document
curdoc().add_root(column(button, p))

Затем в терминале я выполняю:

bokeh serve --show myapp.py

И я вижу:

2017-04-17 13:24:50,576 Starting Bokeh server version 0.12.5
2017-04-17 13:24:50,581 Starting Bokeh server on port 5006 with applications at paths ['/myapp']
2017-04-17 13:24:50,581 Starting Bokeh server with process id: 700

Мой браузер (пробовал и Safari, и Chrome) затем открывает новую вкладку для http://localhost:5006/myapp но страница не загружается. Он застрял примерно на 10% на индикаторе выполнения и никогда не меняется с «Ожидание локального хоста ...». Я установил зависимости, перечисленные на сайте bokeh. Что мне не хватает?

Кстати, я использую OS X 10.12.4. Я также пробовал на машине с Windows и столкнулся с той же проблемой. В консоли моего веб-браузера ничего не отображается, он просто постоянно «ждет 127.0.0.1». Я вижу в своем терминале один запрос «302 GET», если закрываю браузер и пытаюсь снова открыть страницу, но это все.


person Gladwell    schedule 17.04.2017    source источник
comment
Предполагая, что ошибочно разделенная строка на и была здесь только ошибкой форматирования (я отредактировал, чтобы исправить), тогда приведенный выше код отлично работает для меня на OSX и Bokeh 0.12.5 Любые сообщения в консоли javascript браузера?   -  person bigreddot    schedule 17.04.2017
comment
@bigreddot спасибо за исправление. обновленный пост с информацией.   -  person Gladwell    schedule 18.04.2017
comment
В 64-битной Windows 7 с установленным Bokeh 0.12.5 с Anaconda у меня точно такая же проблема (хром и firefox). Я пробовал перейти на 0.12.0, но он все равно не загружается.   -  person Archibald    schedule 18.04.2017
comment
@Archibald Приятно знать, что это не Анаконда. Мне интересно, не хватало ли мне какой-то базовой зависимости, чтобы заставить его работать.   -  person Gladwell    schedule 18.04.2017


Ответы (1)


Я ожидаю, что вы все столкнулись с этой недавней проблемой:

Сервер Bokeh несовместим с tornado = 4.5

Tornado 4.5 (выпущенный несколько дней назад) внес изменение, из-за которого сервер Bokeh больше не работал должным образом. Исправление для этого находится в основной версии и будет в следующем 0.12.6 выпуске. Но исправление также доступно в последних сборках разработчиков. Ваши немедленные варианты:

  • понизить версию Tornado до ‹= 4.4.2, или
  • установить боке> = 0.12.6
person bigreddot    schedule 19.04.2017
comment
Успешно справился. Я понизил Tornado до 4.4.2, чтобы придерживаться хорошо протестированных версий, и теперь он работает. Спасибо! - person Gladwell; 19.04.2017