Обслуживание интерактивной фигуры боке на heroku
я пытаюсь обслуживать интерактивный bokeh
рисунок через heroku. Фигура, которую я пытаюсь обслуживать, по существу эквивалентна этой (пример, код). Я новичок в обоих bokeh
и heroku
поэтому я уверен, что я упускаю что-то очень простое. я думаю, что я пытаюсь сделать, должно быть довольно простым.
во-первых, я могу обслуживать свою фигуру локально, используя . Где myapp
- это имя модуля python это включает в себя bokeh
рис. Обратите внимание, что --show
флаг просто предложит bokeh
чтобы открыть окно браузера после построения фигуры и запуска сервера.
далее, я настроил heroku
учетная запись и создал свое первое приложение, выполнив шаги в Heroku-Начало Работы С Python учебник. Мой репозиторий git включает myapp
, a и Procfile
.
увы, что-то не работает и я в тупике. У меня есть пробовал кучу разных вариантов в моем Procfile
и никто не работал. С bokeh serve ...
команда запускает сервер, не должен Profile
похоже, что это делает трюк:
web: bokeh serve --port $PORT myapp
Должно ли это работать? Возможно, мне чего-то не хватает, и мне нужно создать flask
приложение, которое обертывается вокруг моего bokeh
app но, насколько я могу судить, это не кажется необходимым. Может быть, кто-то знает хороший учебник, который объединяет все эти шаги, я не нашел полного еще.
обновление:
Я приклеиваю немного моего heroku
журналы ниже. Как вы справляетесь с этим --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
1 ответов
Я просто собираюсь ответить на свой вопрос, так как я в конечном итоге смог заставить это работать, и никто еще не ответил на него.
Я закончил с 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
: Я думаю, это говорит bokeh
чтобы выяснить самостоятельно, какой IP-адрес он будет включен.
--use-xheaders
причины bokeh
для переопределения удаленной схемы IP и URI / протокола
Я рад внести изменения в это или принять более осведомленный ответ пользователей, если есть проблемы с этим подходом.