代码之家  ›  专栏  ›  技术社区  ›  jhamman

在heroku上服务互动的bokeh人物

  •  11
  • jhamman  · 技术社区  · 9 年前

    我正在尝试为互动服务 bokeh 通过heroku计算。我试图提供的数字基本上与此相同( example , code ). 我对这两个都是新手 博凯 heroku 所以我很确定我遗漏了一些非常基本的东西——我认为我要做的应该很简单。

    首先,我可以使用 bokeh serve --show myapp 命令哪里 myapp 是包含 博凯 图。请注意 --show 标志只是提示 博凯 构建图形并运行服务器后,打开浏览器窗口。

    接下来,我设置了一个 希罗库 帐户,并按照中的步骤创建了我的第一个应用程序 Heroku - Getting Started With Python tutorial 。我的git存储库包括 我的应用程序 requirements.txt 文件,以及 Procfile .

    唉,有些东西不起作用了,我被难住了。我在我的 程序文件 但都没有奏效。自 bokeh serve ... 命令启动服务器,不应该 程序文件 看起来是这样做的:

    web: bokeh serve --port $PORT myapp
    

    这样行吗?也许我遗漏了一些东西,我需要创建一个 flask 博凯 但据我所知,这似乎没有必要。也许有人知道一个很好的教程将所有这些步骤结合在一起,我还没有找到一个完整的教程。

    更新: 我在粘贴我的 希罗库 日志。你怎么处理这个 --host whitelist 问题

    2016-07-17T05:00:46.513139+00:00 heroku[slug-compiler]: Slug compilation started
    2016-07-17T05:00:46.366909+00:00 heroku[api]: Deploy 9b63d8a by me@me.com
    2016-07-17T05:00:46.367087+00:00 heroku[api]: Release v4 created by me@me.com
    2016-07-17T05:00:46.624937+00:00 heroku[web.1]: State changed from crashed to starting
    2016-07-17T05:00:55.188978+00:00 heroku[web.1]: Starting process with command `bokeh serve --port=39665 myapp.py`
    2016-07-17T05:00:57.876287+00:00 app[web.1]: 2016-07-17 05:00:57,876 Starting Bokeh server on port 39665 with applications at paths ['/myapp']
    2016-07-17T05:00:57.868758+00:00 app[web.1]: 2016-07-17 05:00:57,868 Starting Bokeh server version 0.12.0
    2016-07-17T05:00:57.876378+00:00 app[web.1]: 2016-07-17 05:00:57,876 Starting Bokeh server with process id: 3
    2016-07-17T05:00:58.800309+00:00 heroku[web.1]: State changed from starting to up
    2016-07-17T05:00:59.970326+00:00 app[web.1]: 2016-07-17 05:00:59,970 Rejected connection from host 'myapp.herokuapp.com' because it is not in the --host whitelist
    2016-07-17T05:00:59.973495+00:00 app[web.1]: 2016-07-17 05:00:59,970 403 GET / (XX.XX.XXX.XX) 1.29ms
    2016-07-17T05:00:59.975282+00:00 heroku[router]: at=info method=GET path="/" host=myapp.herokuapp.com request_id=xxxxxxxxxxxxx fwd="XX.XX.XX.XX" dyno=web.1 connect=1ms service=4ms status=403 bytes=219
    
    2 回复  |  直到 5 年前
        1
  •  9
  •   jhamman    9 年前

    我只是想回答我自己的问题,因为我最终能够使这个工作,但还没有其他人回答它。

    我最后得到了一个 Procfile 看起来像这样:

    web: bokeh serve --port=$PORT --host=myapp.herokuapp.com --host=* \
         --address=0.0.0.0 --use-xheaders myapp.py
    

    关于所有这些论点的含义的一些背景(据我所知):

    --port :指定 bokeh 服务器将侦听, $PORT 由设置 heroku

    --host=myapp.herokuapp.com --host=* :将主机名指定为 myapp.heroku... ,通配符应该允许接受所有主机。我不确定这是否需要了。

    --address=0.0.0.0 :我认为这说明 博凯 自行确定其将使用的IP地址。

    --use-xheaders :原因 博凯

        2
  •  6
  •   ttunstall    7 年前

    已接受的答案对我来说并不适用(可能是由于bokeh版本的差异),但由于这仍然是这个问题的热门答案之一,下面是我的小修改,它确实有效:

    web: bokeh serve --port=$PORT --num-procs=0 --allow-websocket-origin=myapp.herokuapp.com --address=0.0.0.0 --use-xheaders myapp.py