Изучение нескольких методов развертывания приложений Bokeh на Heroku

Bokeh – мощная библиотека Python, используемая для создания интерактивных визуализаций и приложений с данными. Heroku, с другой стороны, — это популярная облачная платформа, которая позволяет разработчикам легко развертывать и масштабировать свои приложения. В этой статье мы обсудим различные методы развертывания приложений Bokeh на Heroku, а также приведем примеры кода для каждого метода.

Метод 1. Развертывание приложения Bokeh в качестве приложения Flask
Первый метод включает в себя встраивание приложения Bokeh в приложение Flask и его развертывание на Heroku. Выполните следующие действия:

Шаг 1. Создайте новое приложение Flask.

from flask import Flask, render_template
from bokeh.embed import server_document
app = Flask(__name__)
@app.route('/')
def index():
    script = server_document('https://your-bokeh-app.herokuapp.com/bokeh-app')
    return render_template('index.html', script=script)
if __name__ == '__main__':
    app.run()

Шаг 2. Создайте файл шаблона index.html, который будет отображать приложение Bokeh.

<!DOCTYPE html>
<html>
<head>
    <title>Bokeh App on Heroku</title>
    {{ script|safe }}
</head>
<body>
    <!-- Add any additional HTML content here -->
</body>
</html>

Шаг 3. Разверните приложение Flask на Heroku.

Метод 2. Использование сервера Bokeh с Heroku
Второй метод предполагает развертывание приложения Bokeh как автономного серверного приложения Bokeh на Heroku. Выполните следующие действия:

Шаг 1. Создайте файл main.pyдля приложения Bokeh.

from bokeh.plotting import figure
from bokeh.server.server import Server
from tornado.ioloop import IOLoop
def modify_doc(doc):
    # Create your Bokeh app code here
    p = figure()
    # Add plots and interactions
server = Server({'/bokeh-app': modify_doc}, io_loop=IOLoop.current(), allow_websocket_origin=['your-heroku-app.herokuapp.com'])
server.start()
if __name__ == '__main__':
    server.io_loop.start()

Шаг 2. Создайте Procfile, чтобы указать команду для запуска сервера Bokeh.

web: bokeh serve --port=$PORT --show /path/to/main.py

Шаг 3. Разверните приложение Bokeh на Heroku с помощью Git.

Метод 3: использование внедрения Bokeh с Heroku
Третий метод включает в себя встраивание приложения Bokeh в виде статического HTML-файла и его развертывание в Heroku. Выполните следующие действия:

Шаг 1. Создайте приложение Bokeh как отдельный HTML-файл.

from bokeh.plotting import figure
from bokeh.resources import CDN
from bokeh.embed import file_html
p = figure()
# Add plots and interactions
html = file_html(p, CDN, "My Bokeh App")
with open('bokeh-app.html', 'w') as f:
    f.write(html)

Шаг 2. Создайте простое приложение Flask для рендеринга приложения Bokeh.

from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
    return render_template('bokeh-app.html')
if __name__ == '__main__':
    app.run()

Шаг 3. Разверните приложение Flask на Heroku.

В этой статье мы рассмотрели три различных метода развертывания приложений Bokeh на Heroku. Мы обсудили развертывание приложения Bokeh как приложения Flask с использованием сервера Bokeh и встраивание приложения в виде статического HTML-файла. Каждый метод имеет свои преимущества и может быть выбран в зависимости от конкретных требований вашего проекта. Следуя предоставленным примерам кода, вы сможете легко развернуть свои приложения Bokeh на Heroku и использовать возможности интерактивной визуализации в своих приложениях.