Пример #1
0
def  get_sockets():
    """bind to available socket in this system

    Returns:
        sockets, port -- sockets and port bind to
    """
    _sockets, _port = bind_sockets('0.0.0.0', 0)
    set_bokeh_port(_port)
    return _sockets, _port
Пример #2
0
    def bokeh_worker(self):
        asyncio.set_event_loop(asyncio.new_event_loop())
        sockets, port = bind_sockets(self.hostname, self.port)

        extra_websocket_origins = [
            "{}:{}".format(self.hostname, self.port),
            "{}:{}".format(self.hostname, self.agent.web.port)
        ]
        bokeh_tornado = BokehTornado(
            self.apps, extra_websocket_origins=extra_websocket_origins)
        bokeh_http = HTTPServer(bokeh_tornado)
        bokeh_http.add_sockets(sockets)

        self.server = BaseServer(IOLoop.current(), bokeh_tornado, bokeh_http)
        self.server.start()
        self.server.io_loop.start()
Пример #3
0
def base(score_title):
    LOGGER.info("you're on {}".format(score_title))
    url = '/' + score_title
    score = APPS[score_title](score_title)
    LOGGER.info("starting score...")
    score()
    LOGGER.info("starting server...")
    bokeh_tornado = BokehTornado({url: score.app},
                                 extra_websocket_origins=["localhost:8000"])
    #                                 extra_websocket_origins=["52.53.126.244:8000"])
    # A non-blocking, single-threaded HTTP server (from Tornado)
    bokeh_http = HTTPServer(bokeh_tornado)

    # If port is 0, the OS automatically chooses a free port
    # sockets will listen to localhost
    # Opens a new process (visible with netstat) on the port
    sockets, port = bind_sockets('127.0.0.1', 0)
    #    sockets, port = bind_sockets('0.0.0.0', 0)
    bokeh_http.add_sockets(sockets)
    LOGGER.info("sockets, port: {}, {}".format(sockets, port))

    def bk_worker():
        # An Input/Output event loop for non-blocking sockets (from tornado)
        io_loop = IOLoop.instance()
        # Explicitly coordinate the level Tornado components
        # required to run a Bokeh server:
        #    - IOLoop to run the Bokeh server machinery.
        #    - Tornado application that defines the Bokeh server machinery.
        #    - HTTPServer to direct HTTP requests
        server = BaseServer(io_loop, bokeh_tornado, bokeh_http)
        server.start()
        server.io_loop.start()

    LOGGER.info("starting thread...")
    Thread(target=bk_worker).start()
    script = server_document('http://localhost:{}{}'.format(port, url))
    #    script = server_document('http://52.53.126.244:{}{}'.format(port, url))
    return render_template("base.html", script=script, title=score_title)
Пример #4
0
def test_bind_sockets_with_zero_port():
    ss, port = util.bind_sockets("127.0.0.1", 0)
    assert isinstance(ss, list)
    assert len(ss) == 1
    assert isinstance(ss[0], socket.socket)
    assert isinstance(port, int)
Пример #5
0
        legend_toggle, plot,
        row(column(line_layout_L, sizing_mode='scale_width'),
            column(line_layout_R, sizing_mode='scale_width'),
            sizing_mode='scale_width')
    ],
                    sizing_mode='scale_width')

    # show
    doc.add_root(layout)


########################################
# Plot Page (2/5): Server Setting
########################################
bkapp = Application(FunctionHandler(modify_doc))
sockets, port = bind_sockets("localhost", 0)


########################################
# Plot Page (3/5): Flask call
########################################
@app.route('/dashboard/', methods=['GET'])
def show_dashboard():
    # main
    script = server_document('http://localhost:%d/bkapp' % port)
    return render_template('embed.html', script=script, template='Flask')


########################################
# Plot Page (4/5): Start Server Workers (can run multiple servers)
########################################
Пример #6
0
    slider = Slider(start=0,
                    end=30,
                    value=0,
                    step=1,
                    title="Smoothing by N Days")
    slider.on_change('value', callback)

    doc.add_root(column(slider, plot))
    doc.theme = Theme(filename="theme.yaml")


bkapp = Application(FunctionHandler(modify_doc))

# This is so that if this app is run using something like "gunicorn -w 4" then
# each process will listen on its own port
sockets, port = bind_sockets("127.0.0.1", 0)


@app.route('/', methods=['GET'])
def bkapp_page():
    dataset = request.args.get('dataset')

    if request.args.get('unit_type') is None:
        unit_type = "Celcius"
    else:
        unit_type = request.args.get('unit_type')

    script = server_document('http://127.0.0.1:%d/bkapp' % port,
                             arguments=dict(unit_type=unit_type))

    return render_template(
Пример #7
0
server.register_blueprint(apiOrderBlueprint)
server.register_blueprint(apiMetricBlueprint)
server.register_blueprint(apiPaletteBlueprint)
server.register_blueprint(apiDatashadingBlueprint)
server.register_blueprint(apiNodeColorBlueprint)
server.register_blueprint(apiNodeSizeBlueprint)
server.register_blueprint(apiWindowSpecsBlueprint)

# other stuff
if (not isdir(server.config['UPLOAD_FOLDER'])):
    mkdir(server.config['UPLOAD_FOLDER'])

# start Bokeh server
if "gunicorn" in environ.get("SERVER_SOFTWARE", ""):
    forcedPort = getpid()
    sockets, port = bind_sockets("localhost", forcedPort)
    server.config['PORT'] = port + 20
    server.logger.info("STARTED LISTENING INTERNALLY ON %d AND EXTERNALLY ON %d" % (port, server.config['PORT']))
else:
    sockets, port = bind_sockets("localhost", 0)
    server.config['PORT'] = port

from graphion.visualise import modify_doc
bkapp = Application(FunctionHandler(modify_doc))

def bk_worker():
    set_event_loop(new_event_loop())

    bokeh_tornado = BokehTornado({'/bkapp': bkapp}, extra_websocket_origins=["localhost:5000", "graphion.uddi.ng:*"])
    bokeh_http = HTTPServer(bokeh_tornado)
    bokeh_http.add_sockets(sockets)
Пример #8
0
        doc.add_root(column(r, l1))
    else:
        l = column(plot, row(splot, tplot), row(numco_plot, sales_plot))
        doc.add_root(column(slider, l))



    doc.theme = Theme(filename=f"theme-{theme}.yaml")



bkapp = Application(FunctionHandler(modify_doc))

# This is so that if this app is run using something like "gunicorn -w 4" then
# each process will listen on its own port
sockets, port = bind_sockets("157.245.12.139", 0)

@app.route('/', methods=['GET'])
def bkapp_page():
    if request.args.get('title') is None:
      plot_title = "Sea Surface Temperature at 43.18, -70.43"
    else:
      plot_title = request.args.get('title')
    if plot_title == '1':
        rightdiv = 'none'
        center = 'calc(100% - 16px)'
    else:
        rightdiv  = ''
        center = ''
    datasets = {
      'set1': "Dataset One",
    slider = Slider(start=0, end=30, value=0, step=1, title="Smoothing by N Days")
    slider.on_change('value', callback)

    doc.add_root(column(slider, plot))

    doc.theme = Theme(filename="theme.yaml")

# can't use shortcuts here, since we are passing to low level BokehTornado
bkapp = Application(FunctionHandler(modify_doc))

bokeh_tornado = BokehTornado({'/bkapp': bkapp}, extra_websocket_origins=["localhost:8000"])
bokeh_http = HTTPServer(bokeh_tornado)

# This is so that if this app is run using something like "gunicorn -w 4" then
# each process will listen on its own port
sockets, port = bind_sockets("localhost", 0)
bokeh_http.add_sockets(sockets)

@app.route('/', methods=['GET'])
def bkapp_page():
    script = server_document('http://localhost:%d/bkapp' % port)
    return render_template("embed.html", script=script, template="Flask")

def bk_worker():
    io_loop = IOLoop.current()
    server = BaseServer(io_loop, bokeh_tornado, bokeh_http)
    server.start()
    server.io_loop.start()

from threading import Thread
Thread(target=bk_worker).start()
Пример #10
0
def test_bind_sockets_with_zero_port():
    ss, port = util.bind_sockets("127.0.0.1", 0)
    assert isinstance(ss, list)
    assert len(ss) == 1
    assert isinstance(ss[0], socket.socket)
    assert isinstance(port, int)
Пример #11
0
from tornado.ioloop import IOLoop
from threading import Thread
from app import bokeh_TSNE as bk
import asyncio


from flask_migrate import Migrate
# from flask_login import LoginManager

app = Flask(__name__)
# Configure app based on supplied settings in Config.py
app.config.from_object(Config)
# Initialize database with app
with app.app_context():
    db.init_app(app)
    app.config['sockets'], app.config['port'] = bind_sockets("localhost", 0)
    app.register_blueprint(apiBP, url_prefix='/api')
# Set up database migration to allow updating of database tables to match models.py
migrate = Migrate(app, db)


def bk_worker():
    # Can't pass num_procs > 1 in this configuration. If you need to run multiple
    # processes, see e.g. flask_gunicorn_embed.py
    # server = Server({'/bkapp': bk.start_doc()}, io_loop=IOLoop(), allow_websocket_origin=['127.0.0.1:5000', '127.0.0.1:3000', '127.0.0.1:8000', 'localhost:3000', 'localhost:5000', 'localhost:8000'], relative_urls=True)
    # server.start()
    # server.io_loop.start()
    print('Starting worker...')

    print(app)
    asyncio.set_event_loop(asyncio.new_event_loop())
Пример #12
0
def bk_worker(bokehsockets, flask_port):
    bokeh_tornado = BokehTornado({'/bokeh': bkapp}, extra_websocket_origins=["localhost",
                                                                             "127.0.0.1",
                                                                             "0.0.0.0",
                                                                             "*"
                                                                             ])
    bokeh_http = HTTPServer(bokeh_tornado)
    bokeh_http.add_sockets(bokehsockets)

    io_loop = IOLoop.current()
    server = BaseServer(io_loop, bokeh_tornado, bokeh_http)
    server.start()
    server.io_loop.start()


if __name__ == '__main__':
    from threading import Thread

    bokehsockets, bokehport = bind_sockets("0.0.0.0", 0)
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(('0.0.0.0', 0))
    flaskport = sock.getsockname()[1]
    sock.close()

    Thread(target=bk_worker, args=([bokehsockets, flaskport])).start()
    app.config["BASE_DIR"] = os.path.expanduser('~/REINVENT/')
    app.config["BOKEH_PORT"] = bokehport
    print("Running Vizor on http://localhost:{}/".format(flaskport))
    app.run(port=flaskport, debug=False)
Пример #13
0
    slider.on_change('value', callback)

    doc.add_root(column(slider, plot))

    doc.theme = Theme(filename="theme.yaml")


bkapp = Application(FunctionHandler(modify_doc))

bokeh_tornado = BokehTornado({'/bkapp': bkapp},
                             extra_websocket_origins=["127.0.0.1:8000"])
bokeh_http = HTTPServer(bokeh_tornado)

# This is so that if this app is run using something like "gunicorn -w 4" then
# each process will listen on its own port
sockets, port = bind_sockets("127.0.0.1", 46518)
bokeh_http.add_sockets(sockets)


@app.route('/', methods=['GET'])
def bkapp_page():
    print('here')
    script = server_document('http://127.0.0.1:%d/bkapp' % port)
    print(str(script))
    return render_template("embed.html", script=script, template="Flask")


def bk_worker():
    io_loop = IOLoop.current()
    server = BaseServer(io_loop, bokeh_tornado, bokeh_http)
    server.start()