I am testing Plotly Dash as a possible dashboarding tool.
I am trying to run one of the charts found in the documentation: https://plotly.com/python/bar-charts/
import dash from dash import dcc from dash import html from dash.dependencies import Input, Output import plotly.express as px df = px.data.tips() days = df.day.unique() app = dash.Dash(__name__) app.layout = html.Div([ dcc.Dropdown( id="dropdown", options=[{"label": x, "value": x} for x in days], value=days[0], clearable=False, ), dcc.Graph(id="bar-chart"), ]) @app.callback( Output("bar-chart", "figure"), [Input("dropdown", "value")]) def update_bar_chart(day): mask = df["day"] == day fig = px.bar(df[mask], x="sex", y="total_bill", color="smoker", barmode="group") return fig app.run_server(debug=True, port=8049)
When I run this I get an error. Here is the end of the trace callback:
File "zmq/backend/cython/checkrc.pxd", line 28, in zmq.backend.cython.checkrc._check_rc zmq.error.ZMQError: Address already in use
As you can see from my example, I have already tried altering the port to avoid this error. I have tried many ports around 8050, but they all seem to be “already in use.” My guess is that Dash reserves the port then tries to use it but sees that it’s already reserved, not knowing that it was reserved for the process it was about to execute.
Does anyone know how to fix this error?
Advertisement
Answer
If you are running it from jupyter-notebook
or jupyter-lab
, you should run the app server as:
app.run_server(debug=True, port=8049, use_reloader=False)