I am trying to deploy my first app, I followed all the steps required, but when I try to run it I get:
2019-11-02T19:13:35.901538+00:00 heroku[router]: at=error code=H10 desc=“App crashed” method=GET path="/" host=vit-dash-app-8486.herokuapp.com request_id=be5a0b67-3d5b-4ed2-b3f5-98f42ff354a8 fwd=“64.180.1.156” dyno= connect= service= status=503 bytes= protocol=https
2019-11-02T19:13:37.749622+00:00 heroku[router]: at=error code=H10 desc=“App crashed” method=GET path="/favicon.ico" host=vit-dash-app-8486.herokuapp.com request_id=46b75a76-175b-4055-b877-0bc69b1e68b0 fwd=“64.180.1.156” dyno= connect= service= status=503 bytes= protocol=https
This is my code:
import pandas as pd
import dash
import dash_table
import dash_html_components as html
import dash_core_components as dcc
import dash_table.FormatTemplate as FormatTemplate
from dash_table.Format import Sign
from dash.dependencies import Input, Output
sales = pd.read_excel('assets/sales.xls')
sales = sales.iloc[:][['Location','DOB','SDLY']]
var = ((sales['DOB']/sales['SDLY'])-1).round(3)
sales = pd.concat([sales,var], axis=1)
sales.columns=['Location','DOB','SDLY','Net Sales Variance']
guests = pd.read_excel('assets/guests.xls')
guests = guests.iloc[:][['Location','DOB','SDLY']]
var = ((guests['DOB']/guests['SDLY'])-1).round(3)
guests = pd.concat([guests,var], axis=1)
guests.columns=['Location','DOB','SDLY','Guest Count Variance']
data = sales.merge(guests, on='Location')
external_stylesheets=['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
server = app.server
app.layout = html.Div([
html.Div([
html.H3('Daily Metrics',
style={'textAlign': 'center',
'padding':20}
)
]
),
html.Div([
html.Div(id='graph',
className='six columns'),
html.Div([
dash_table.DataTable(
id='table',
data=data.to_dict('records'),
columns=[{
'id': 'Location',
'name': 'Location',
'type': 'text'
},
{
'name': 'Net Sales Variance',
'id': 'Net Sales Variance',
'type': 'numeric',
'format': FormatTemplate.percentage(1).
sign(Sign.positive)
},
{
'name': 'Guest Count Variance',
'id': 'Guest Count Variance',
'type': 'numeric',
'format': FormatTemplate.percentage(1).
sign(Sign.positive)
}
],
style_as_list_view=True,
sort_action='native',
row_selectable="multi",
fixed_rows={
'headers': True, 'data': 0},
style_cell={'width': '150px',
'textAlign': 'left'},
style_header={
'backgroundColor': 'white',
'fontWeight': 'bold',
'textAlign': 'center'},
style_data_conditional=[
{
'if': {'row_index': 'odd'},
'backgroundColor': 'rgb(230, 230, 230)'
},
{
"if": {"column_id": 'Net Sales Variance',
'filter_query': '{Net Sales Variance} > 0'
},
"backgroundColor": "#D1FFBE",
},
{
"if": {"column_id": 'Net Sales Variance',
'filter_query': '{Net Sales Variance} < 0'
},
"backgroundColor": "#FFBEBE",
},
{
"if": {"column_id": 'Guest Count Variance',
'filter_query': '{Guest Count Variance} > 0'
},
"backgroundColor": "#D1FFBE",
},
{
"if": {"column_id": 'Guest Count Variance',
'filter_query': '{Guest Count Variance} < 0'
},
"backgroundColor": "#FFBEBE",
},
{
"if": {"column_id": 'Location',
'filter_query': '{Location} eq "Core Stores"'
},
"backgroundColor": "#FFFAAA",
'fontWeight': 'bold',
},
]
),
], className='five columns'),
], className='row')
])
@app.callback(
Output('graph', "children"),
[Input('table', "derived_virtual_data"),
Input('table', "derived_virtual_selected_rows")])
def update_graphs(rows, derived_virtual_selected_rows):
if derived_virtual_selected_rows is None:
derived_virtual_selected_rows = []
dff = data if rows is None else pd.DataFrame(rows)
return [
dcc.Graph(
id=column,
figure={
"data": [
{
"x": dff["Location"],
"y": dff["Net Sales Variance"],
"type": "bar",
"name": "Net Sales",
"marker": {"color":
['#EC2D2D' if i in
derived_virtual_selected_rows
else '#FB9898' for i in range(len(dff))]},
},
{
"x": dff["Location"],
"y": dff["Guest Count Variance"],
"type": "bar",
"name": "Guest Count",
"marker": {"color":
['#3C2DEC' if i in
derived_virtual_selected_rows
else '#9D98FB' for i in range(len(dff))]},
}
],
"layout": {
"xaxis": {"automargin": True},
"yaxis": {
"automargin": True,
"tickformat": ".0%",
"hoverformat": ".1%",
},
"legend": {
"orientation": "h",
"y": 1.15
},
"height": 500,
"width": 800,
"margin": {"t": 30, "l": 80, "r": 80, "b":30},
},
},
)
for column in ["Location"]
if column in dff
]
if __name__ == '__main__':
app.run_server(debug=True)
Am I doing something wrong?