Вопрос:

Сервер Bokeh на одном компьютере, обслуживающий другой компьютер

python server bokeh

923 просмотра

3 ответа

178 Репутация автора

Наверное, простой вопрос. Я новичок

У меня есть локальный компьютер (компьютер «A») и удаленный компьютер (компьютер «B»).

Я хочу запустить сервер Bokeh на B, и результаты будут отображаться в браузере A, когда я перехожу к localhost: 8000.

Сначала я создал этот файл на B. Он просто имеет простой график с ползунком. Вы перемещаете ползунок, и сюжет меняется. Это работает, когда я запускаю его на А.

import sys
import numpy as np
from tornado.ioloop import IOLoop

from bokeh.application.handlers import FunctionHandler
from bokeh.application import Application
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, Slider
from bokeh.plotting import figure
from bokeh.server.server import Server

def modify_doc(doc):

    # Initialize the data
    power = 1
    x = np.arange(10)
    y = x**power

    # Initialize the plot and slider
    p = figure()
    p_source = ColumnDataSource(data=dict(x=x, y=y))
    p.line('x', 'y', source=p_source)
    s = Slider(start=0, end=10, value=1, step=.1, title="multiplier")

    # When the slider is changed, redraw the plot
    def callback(attr, old, new):
        x = p_source.data['x']
        y = x**s.value
        p_source.data = dict(x=x, y=y)
    s.on_change('value', callback)

    doc.add_root(column([p, s]))


def main(_):
    io_loop = IOLoop.current()
    bokeh_app = Application(FunctionHandler(modify_doc))
    server_kwargs = {}
    server_kwargs['port'] = 8000
    server = Server({'/': bokeh_app}, io_loop=io_loop, **server_kwargs)

    server.start()

    io_loop.add_callback(server.show, "/")
    io_loop.start()


if __name__ == '__main__':
    main(sys.argv[1:])

Поэтому я копирую этот файл в B и запускаю его на B, выполнив команду ssh'ing и введя:

python barebones.py

Тогда по AI типу:

ssh root@123.123.123.123 -N -D 7000

Обратите внимание, я набрал 7000, а не 8000. Я пробовал оба; Я не понимаю, почему некоторые вещи, которые я читал в Интернете, говорят мне использовать другое число там.

Далее я открываю Firefox> Настройки> Сетевой прокси> Настройки> Ручная настройка прокси. Я устанавливаю хост SOCKS на «localhost» (без кавычек) и порт на 7000 и выбираю SOCKSv5. Нажмите ОК. В адресной строке Firefox перейдите по адресу http: // localhost: 8000 . (Обратите внимание, я сказал, что 8000 там, а не 7000. Опять же, не уверен, что это правильно, но я пробовал различные перестановки.) Он говорит «Невозможно подключиться».

Я попытался вставить это в сценарий, но, похоже, это не имело никакого эффекта. Может быть, я далеко отсюда

from bokeh.server.util import create_hosts_whitelist
allow_websocket_origin = ['0.0.0.0:8000']
port=8000
create_hosts_whitelist(allow_websocket_origin, port)

Я знаю, что есть другой способ запустить сервер bokeh, используя команду «bokeh serve ...» в командной строке, но я пытаюсь создать автономный скрипт, если это возможно.

Гах. Это должно быть, вероятно, просто. Что мне не хватает?

Автор: dnh37 Источник Размещён: 06.01.2018 07:47

Ответы (3)


1 плюс

75455 Репутация автора

Вы пробовали следующее?

На B, запустить:

bokeh serve filename.py --address 0.0.0.0

Затем вы можете получить доступ к приложению с другого компьютера с помощью URL http://Bs_name_or_ip_address:5006/. Если на Bкомпьютере работает брандмауэр , вы должны разрешить входящий трафик через порт.

Чтобы переопределить номер порта по умолчанию (5006), используйте --port NNNNаргумент.

Смотрите также: https://bokeh.pydata.org/en/latest/docs/reference/command/subcommands/serve.html.

Автор: codeape Размещён: 08.01.2018 10:18

1 плюс

89 Репутация автора

Следующая команда работала для версий Bokeh 1+

bokeh serve --show filename.py --allow-websocket-origin = *: 5006

Автор: Vaibhav Gorde Размещён: 18.04.2019 06:26

1 плюс

70 Репутация автора

Я знаю, что этот вопрос действительно старый, но я столкнулся с подобной проблемой, и мне удалось решить ее с помощью предложения, размещенного здесь: https://groups.google.com/a/continuum.io/forum/#!topic/bokeh/CmweAdzkWXw

Может быть, это помогает кому-то еще:

На узле, где будет работать Bokeh:

bokeh serve &
ssh -NfR 5006:localhost:5006 user@gateway

На локальной машине (например, ноутбуке):

ssh -NfL localhost:5006:localhost:5006 user@gateway

Теперь вы должны иметь возможность перейти по адресу http: // localhost: 5006, чтобы получить доступ к Bokeh, работающему на узле за шлюзом.

Автор: Ivo Leist Размещён: 26.05.2019 03:26
Вопросы из категории :
32x32