After modify my Procfile, the current log is posted below, it looks that everything works properly, but when I issue “heroku open” the website automatically goes to “https://pddatasetvisualization.herokuapp.com/runserver”. if I go to “https://pddatasetvisualization.herokuapp.com:8080”. nothing is displayed.
any suggestions? thanks a lot.
2018-06-26T20:23:15.403395+00:00 heroku[router]: at=info method=GET path="/" host=pddatasetvisualization.herokuapp.com request_id=9aceef25-32b6-4dd1-8ffa-a6c86a0f4f8d fwd="74.3.133.82" dyno=web.1 connect=1ms service=5ms status=302 bytes=188 protocol=https
2018-06-26T20:23:15.401527+00:00 app[web.1]: 2018-06-26 20:23:15,401 302 GET / (74.3.133.82) 1.41ms
2018-06-26T20:23:15.811139+00:00 heroku[router]: at=info method=GET path="/runserver" host=pddatasetvisualization.herokuapp.com request_id=7e1d9baf-c2cc-4960-bc06-eadd7a6287cc fwd="74.3.133.82" dyno=web.1 connect=1ms service=258ms status=200 bytes=3055 protocol=https
2018-06-26T20:23:15.791521+00:00 app[web.1]: 2018-06-26 20:23:15,791 Using selector: EpollSelector
2018-06-26T20:23:15.793226+00:00 app[web.1]: 2018-06-26 20:23:15,793 Starting Bokeh server version 0.12.16 (running on Tornado 5.0.2)
2018-06-26T20:23:15.796668+00:00 app[web.1]: Exception in thread Thread-1:
2018-06-26T20:23:15.796671+00:00 app[web.1]: Traceback (most recent call last):
2018-06-26T20:23:15.796673+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/threading.py", line 916, in _bootstrap_inner
2018-06-26T20:23:15.796675+00:00 app[web.1]: self.run()
2018-06-26T20:23:15.796677+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/threading.py", line 864, in run
2018-06-26T20:23:15.796678+00:00 app[web.1]: self._target(*self._args, **self._kwargs)
2018-06-26T20:23:15.796680+00:00 app[web.1]: File "/app/DataVisualizationWebApp/views.py", line 71, in bk_worker
2018-06-26T20:23:15.796682+00:00 app[web.1]: server = Server({'/bkapp': bk_plter.plot_doc}, io_loop=IOLoop(), allow_websocket_origin=["*"])
2018-06-26T20:23:15.796684+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/bokeh/server/server.py", line 390, in __init__
2018-06-26T20:23:15.796686+00:00 app[web.1]: sockets, self._port = bind_sockets(self.address, self.port)
2018-06-26T20:23:15.796688+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/bokeh/server/util.py", line 32, in bind_sockets
2018-06-26T20:23:15.796689+00:00 app[web.1]: ss = netutil.bind_sockets(port=port or 0, address=address)
2018-06-26T20:23:15.796691+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/tornado/netutil.py", line 163, in bind_sockets
2018-06-26T20:23:15.796693+00:00 app[web.1]: sock.bind(sockaddr)
2018-06-26T20:23:15.796694+00:00 app[web.1]: OSError: [Errno 98] Address already in use
2018-06-26T20:23:15.796728+00:00 app[web.1]:
2018-06-26T20:23:15.809352+00:00 app[web.1]: 2018-06-26 20:23:15,809 200 GET /runserver (74.3.133.82) 254.49ms
2018-06-26T20:23:16.053422+00:00 app[web.1]: 2018-06-26 20:23:16,053 [pid 17] 0 clients connected
2018-06-26T20:23:16.053504+00:00 app[web.1]: 2018-06-26 20:23:16,053 [pid 17] /bkapp has 0 sessions with 0 unused
2018-06-26T20:23:16.709137+00:00 app[web.1]: 2018-06-26 20:23:16,708 101 GET /runserver/ws?bokeh-protocol-version=1.0&bokeh-session-id=qYWSaITYPk5S7lVnFrCFf8QQY737mXV0PH7FjmYHRUkn (74.3.133.82) 1.13ms
2018-06-26T20:23:16.709361+00:00 app[web.1]: 2018-06-26 20:23:16,709 WebSocket connection opened
2018-06-26T20:23:16.710091+00:00 app[web.1]: 2018-06-26 20:23:16,709 Receiver created for Protocol('1.0')
2018-06-26T20:23:16.710223+00:00 app[web.1]: 2018-06-26 20:23:16,710 ProtocolHandler created for Protocol('1.0')
2018-06-26T20:23:16.710313+00:00 app[web.1]: 2018-06-26 20:23:16,710 ServerConnection created
2018-06-26T20:23:16.804475+00:00 app[web.1]: 2018-06-26 20:23:16,804 Sending pull-doc-reply from session 'qYWSaITYPk5S7lVnFrCFf8QQY737mXV0PH7FjmYHRUkn'
2018-06-26T20:23:20.146248+00:00 app[web.1]: 2018-06-26 20:23:20,146 [pid 16] 1 clients connected
2018-06-26T20:23:20.146266+00:00 app[web.1]: 2018-06-26 20:23:20,146 [pid 18] 0 clients connected
2018-06-26T20:23:20.146424+00:00 app[web.1]: 2018-06-26 20:23:20,146 [pid 18] /runserver has 0 sessions with 0 unused
2018-06-26T20:23:20.146517+00:00 app[web.1]: 2018-06-26 20:23:20,146 [pid 16] /runserver has 1 sessions with 0 unused
2018-06-26T20:23:20.146759+00:00 app[web.1]: 2018-06-26 20:23:20,146 [pid 17] 0 clients connected
2018-06-26T20:23:20.146906+00:00 app[web.1]: 2018-06-26 20:23:20,146 [pid 17] /runserver has 0 sessions with 0 unused
2018-06-26T20:23:20.148991+00:00 app[web.1]: 2018-06-26 20:23:20,148 [pid 19] 0 clients connected
2018-06-26T20:23:20.149178+00:00 app[web.1]: 2018-06-26 20:23:20,149 [pid 19] /runserver has 0 sessions with 0 unused
2018-06-26T20:23:20.153296+00:00 app[web.1]: 2018-06-26 20:23:20,153 [pid 21] 1 clients connected
``
···
On Tuesday, June 26, 2018 at 11:15:18 AM UTC-6, peng wang wrote:
2018-06-26T15:13:11.315748+00:00 heroku[web.1]: Unidling
2018-06-26T15:13:11.318199+00:00 heroku[web.1]: State changed from down to starting
2018-06-26T15:13:22.108084+00:00 heroku[web.1]: Starting process with command bokeh serve \
2018-06-26T15:14:26.512267+00:00 heroku[router]: at=error code=H20 desc=“App boot timeout” method=GET path=“/” host=pddatasetvisu
lization.herokuapp.com request_id=ba294fca-cb78-4a9d-8c1f-126c639a1e34 fwd=“74.3.133.82” dyno= connect= service= status=503 bytes
protocol=https
2018-06-26T15:15:13.354413+00:00 heroku[web.1]: State changed from starting to down
2018-06-26T15:16:29.111319+00:00 heroku[–use-xheaders.1]: State changed from crashed to starting
2018-06-26T15:16:29.155876+00:00 heroku[web.1]: State changed from down to starting
2018-06-26T15:16:37.506772+00:00 heroku[–use-xheaders.1]: Starting process with command runserver.py
2018-06-26T15:16:38.082887+00:00 heroku[–use-xheaders.1]: State changed from starting to up
2018-06-26T15:16:39.348292+00:00 heroku[–use-xheaders.1]: Process exited with status 127
2018-06-26T15:16:39.290146+00:00 app[–use-xheaders.1]: bash: runserver.py: command not found
2018-06-26T15:16:39.362489+00:00 heroku[–use-xheaders.1]: State changed from up to crashed
2018-06-26T15:16:39.364851+00:00 heroku[–use-xheaders.1]: State changed from crashed to starting
2018-06-26T15:16:39.646079+00:00 heroku[web.1]: Starting process with command gunicorn \
2018-06-26T15:16:47.874941+00:00 heroku[–use-xheaders.1]: Starting process with command runserver.py
2018-06-26T15:16:48.598364+00:00 heroku[–use-xheaders.1]: State changed from starting to up
2018-06-26T15:16:49.698695+00:00 app[–use-xheaders.1]: bash: runserver.py: command not found
2018-06-26T15:16:49.777166+00:00 heroku[–use-xheaders.1]: State changed from up to crashed
2018-06-26T15:16:49.753852+00:00 heroku[–use-xheaders.1]: Process exited with status 127
2018-06-26T15:17:55.019111+00:00 heroku[router]: at=error code=H20 desc=“App boot timeout” method=GET path=“/” host=pddatasetvisu
lization.herokuapp.com request_id=9cbdd753-5cf6-4414-86a5-ad53f5f230b5 fwd=“74.3.133.82” dyno= connect= service= status=503 bytes
protocol=https
2018-06-26T15:18:31.157899+00:00 heroku[web.1]: State changed from starting to down
2018-06-26T15:28:45.752528+00:00 heroku[–use-xheaders.1]: State changed from crashed to starting
2018-06-26T15:28:45.809646+00:00 heroku[web.1]: State changed from down to starting
2018-06-26T15:28:54.652937+00:00 heroku[web.1]: Starting process with command gunicorn runserver:app \
2018-06-26T15:28:58.508453+00:00 heroku[–use-xheaders.1]: Starting process with command runserver.py
2018-06-26T15:28:59.145762+00:00 heroku[–use-xheaders.1]: State changed from starting to up
2018-06-26T15:29:00.402928+00:00 app[–use-xheaders.1]: bash: runserver.py: command not found
2018-06-26T15:29:00.441938+00:00 heroku[–use-xheaders.1]: Process exited with status 127
2018-06-26T15:29:00.460030+00:00 heroku[–use-xheaders.1]: State changed from up to crashed
2018-06-26T15:29:00.462981+00:00 heroku[–use-xheaders.1]: State changed from crashed to starting
2018-06-26T15:29:07.766677+00:00 heroku[–use-xheaders.1]: Starting process with command runserver.py
2018-06-26T15:29:08.503294+00:00 heroku[–use-xheaders.1]: State changed from starting to up
2018-06-26T15:29:09.436912+00:00 app[–use-xheaders.1]: bash: runserver.py: command not found
``
On Tuesday, June 26, 2018 at 11:13:26 AM UTC-6, peng wang wrote:
this is what I got from log
2018-06-26T16:32:56.022950+00:00 app[--use-xheaders.1]: bash: runserver.py: command not found
2018-06-26T16:50:12.957976+00:00 heroku[--use-xheaders.1]: State changed from crashed to starting
2018-06-26T16:50:22.209917+00:00 heroku[--use-xheaders.1]: Starting process with command `runserver.py`
2018-06-26T16:50:22.936457+00:00 heroku[--use-xheaders.1]: State changed from starting to up
2018-06-26T16:50:24.638321+00:00 heroku[--use-xheaders.1]: Process exited with status 127
2018-06-26T16:50:24.670204+00:00 heroku[--use-xheaders.1]: State changed from up to crashed
2018-06-26T16:50:24.574760+00:00 app[--use-xheaders.1]: bash: runserver.py: command not found
2018-06-26T17:11:13.574387+00:00 heroku[web.1]: Unidling
2018-06-26T17:11:13.590291+00:00 heroku[web.1]: State changed from down to starting
2018-06-26T17:11:26.198402+00:00 heroku[web.1]: Starting process with command `bokeh serve \`
2018-06-26T17:12:28.960662+00:00 heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path="/" host=[pddatasetvisualization.herokuapp.com](http://pddatasetvisualization.herokuapp.com) request_id=f36aac27-efb7-4693-a24e-1f9d75268066 fwd="74.3.133.82" dyno= connect= service= status=503 bytes= protocol=https
``
On Tuesday, June 26, 2018 at 10:25:56 AM UTC-6, peng wang wrote:
I can not successfully deploy my "Flask + Bokeh Server " on “Heroku”, here is everything what I have.
1, project directory:
+DataVisualization
-Data
-static
-templates
-init_.py
-views.py
-Procfile
-requirements.txt
-runtime.txt
-theme.yaml
-runserver.py
- requirements.txt:
altgraph==0.15
bokeh==0.12.16
click==6.7
cycler==0.10.0
Flask==1.0.2
future==0.16.0
itsdangerous==0.24
Jinja2==2.10
kiwisolver==1.0.1
macholib==1.9
MarkupSafe==1.0
matplotlib==2.2.2
numpy==1.14.3
pefile==2017.11.5
py2exe==0.9.2.2
pyparsing==2.2.0
python-dateutil==2.7.3
pytz==2018.4
pywin32-ctypes==0.1.2
six==1.11.0
tornado==5.0.2
Werkzeug==0.14.1
- Procfile :
web: bokeh serve \
–port=$PORT \
--log-level=debug \
--allow-websocket-origin=[pddatasetvisualization.herokuapp.com](http://pddatasetvisualization.herokuapp.com)
--host=[pddatasetvisualization.herokuapp.com](http://pddatasetvisualization.herokuapp.com) \
--host=* --address=0.0.0.0 \
--use-xheaders runserver.py
- runtime.txt:
python-3.6.5
- runserver.py:
from os import environ
from DataVisualizationWebApp import app, views
from threading import Thread
Thread(target=views.bk_worker).start()
if name == ‘main’:
app.run(host='0.0.0.0', port=8080)
``
6. views.py
def bk_worker():
# Can't pass num_procs > 1 in this configuration. If you need to run multiple
# processes, see e.g. flask_gunicorn_embed.py
#server = Server({'/bkapp': modify_doc}, io_loop=IOLoop(), allow_websocket_origin=["*"])
#server = Server({'/bkapp': bk_plter.plot_doc}, io_loop=IOLoop(), allow_websocket_origin=["localhost:15264"])
server = Server({'/bkapp': bk_plter.plot_doc}, io_loop=IOLoop(), allow_websocket_origin=["[0.0.0.0:8080](http://0.0.0.0:8080)"])
#server = Server({'/bkapp': bk_plter.plot_doc}, io_loop=IOLoop())
server.start()
server.io_loop.start()
``
- also views.py
“”"
Routes and views for the flask application.
“”"
from datetime import datetime
from DataVisualizationWebApp import bk_plotter as bk_plter
from DataVisualizationWebApp import bk_bar_stacked as bk_bar__stacked_plter
from DataVisualizationWebApp import importdata as dataLoader
from flask import Flask, render_template, request
from DataVisualizationWebApp import app
from flask import Flask, render_template
from bokeh.embed import server_document
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, Slider
from bokeh.plotting import figure, curdoc
from bokeh.server.server import Server
from bokeh.themes import Theme
from tornado.ioloop import IOLoop
from bokeh.io import curdoc
from bokeh.sampledata.sea_surface_temperature import sea_surface_temperature
#paramater
@app.route(‘/’, methods=[‘GET’])
def bkapp_page():
"""Renders the home page."""
#script = server_document('[http://localhost:5006/bkapp](http://localhost:5006/bkapp)')
script = server_document('[https://0.0.0.0:5006/bkapp](https://0.0.0.0:5006/bkapp)')
#return render_template("index.html", script=script, template="Flask")
return render_template("embed.html", script=script, template="Flask")
``
any comments, highly appreciated. after I finished this project, I will post all my code here for anyone else reference. thanks a lot