3

bokeh由于跨域问题,我无法在已部署的服务器上工作。我已经以几种形式提出了这个问题,但并没有真正得到任何地方。

我总是得到错误

XMLHttpRequest cannot load http://127.0.0.1:5006/bokeh/objinfo/0257493b-cce5-450d-8036-2bc57233b1dc/bd1791f4-4d28-4faa-8c9d-a6fe5a1721c1. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://my_ip_address' is therefore not allowed access. The response had HTTP status code 500.

无论我是在运行一个小程序还是试图嵌入一个单一的情节。

在这里,我试图从Flask视图中获取绘图脚本

@perf.route('/_fetch_heatmap', methods=['POST'])
@login_required
def fetch_sd_heatmap():

    document = Document()
    session = Session(root_url='http://127.0.0.1:5006', configdir=current_app.config['BASE_DIRECTORY'])
    session.use_doc('sd_viz')
    session.load_document(document)
    ...
    plots = VBox(hm_duration, hm_frequency)

    document.add(plots)
    push(session, document)

    script = autoload_server(plots, session)

return jsonify({'script': script})

该脚本返回到ajax我的 javascript 中的调用。然后将此脚本附加到相应的<div>

这在我的开发机器上运行良好。

下面是我用于生产的 nginx 配置

server {


    listen my_ip default_server;
    charset     utf-8;
    client_max_body_size 30M;

    location ~ ^/(app_config.py|.git) {
        deny all;
        return 404;
    }

    location / {
        index index.html index.htm;
        root /home/myuser/app_directory;
        try_files $uri @app;
    }

    location /static {
    alias /home/myuser/app_directory/webapp/static;
    }


    location @app {
        include uwsgi_params;
        uwsgi_pass unix:/home/myuser/app_directory/uwsgi.sock;
        uwsgi_connect_timeout 18000;
...
}

有没有人成功地从在生产环境中运行的服务器上制作了一个带有嵌入式bokeh绘图的烧瓶应用程序?bokeh

4

1 回答 1

1

您好,只是为了更新这个讨论,对于新的 Bokeh 服务器,0.11有更多关于部署的文档:

http://docs.bokeh.org/en/0.11.1/docs/user_guide/server.html

包括有关在反向代理后面运行、使用负载平衡器和流程管理器以及使用 Salt 等工具自动化的信息。never 服务器更加健壮、可扩展且易于使用。您可以在此处查看自 2016 年 1 月以来持续“生产”部署的实时 Bokeh 服务器示例库:

http://demo.bokeh.org

作为参考,可以在 GitHub 上学习完全自动化的部署:

https://github.com/bokeh/demo.bokeh.org

此外,在此处的“幸福”示例中演示了嵌入特定于会话的 Bokeh 服务器应用程序的相当复杂的示例:

https://github.com/bokeh/bokeh/tree/master/examples/embed/server_session

但最后我应该说,即将发布的0.12版本将能够为 Bokeh 应用程序设置自定义 Jinja 模板,这意味着像单页应用程序这样大量围绕 Bokeh 文档构建的东西可以直接从 Bokeh 服务器提供,而无需嵌入另一个网络服务器(如果需要)。

于 2016-05-12T15:10:44.553 回答