Я пытаюсь развернуть приложение фляги на экземпляре aws EC2, используя эластичный бобовый стебель. Приложение фляги отображает виджет Bokeh, который считывается в шаблон Jinja2.
На своем локальном компьютере я запускаю приложение фляги с app.run (host = '0.0.0.0', port = 8000). Я создаю документ сервера для виджета в 'http://localhost:5006/widget'. Когда я открываю http://localhost:8000, страница отображается с виджетом. Я также могу открыть localhost: 5006 / widget, и я увижу виджет самостоятельно.
Теперь, когда я иду и развертываю его на эластичном beanstalk, я изменяю документ сервера виджета на ': 5006 / widget' и запускаюприложение на хосте =. Если я открою ': 5006 / widget' в браузере, он снова покажет мне мой виджет, который взаимодействует как следует. Тем не менее, когда я иду к нему будет отображаться страница, которая отображает все HTML, но виджет не виден. Кроме того, когда я взаимодействую со страницей, на которой изменяется виджет, я могу перейти к: 5006 / виджет, и изменения будут отображаться в виджете. Кажется, что виджет работает так, как должен, и может взаимодействовать с веб-страницей, но я просто не могу понять, почему виджет не будет отображаться на главной странице.
Я открыл входящие порты дляTCP на 5006 и 8000, и в консоли не отображаются ошибки. Что может препятствовать отображению виджета?
Редактировать: Пытаться уточнить, как встроено приложение:
doc = bokeh.plotting.curdoc()
def createWidget(doc):
p = figure(...)
doc.add_root(p)
@app.route('/', methods=['GET', 'POST'])
def bkapp_page():
widget = server_document('<ec2-ip>:5006/widget')
return render_template("index.html", widget=widget, template="Flask")
def bk_worker():
server = Server({'/widget': createWidget, io_loop=IOLoop(), allow_websocket_origin=["*"])
server.start()
server.io_loop.start()
from threading import Thread
thread = Thread(target=bk_worker)
thread.start()
if __name__ == '__main__':
app.run(host=<ec2-ip>, port=5000)
Затем в index.html у меня есть {{widget |safe}} line. Работая на локальном компьютере, я использую server_document ('http://localhost:5006/widget') и app.run (host = 0.0.0.0, port = 5000).
Edit: как указало bigreddot, источник должен использовать https, еслиURL для страницы использует https.