Dash: Dash offline is enabled?

Created on 26 Jun 2017  ·  19Comments  ·  Source: plotly/dash

Can I use Dash application in offline environment?
My application can't access CDN servers and the loading page doesn't change.

https://github.com/plotly/dash/issues/7

Most helpful comment

Did you try the suggestion at the bottom of the user guide?

https://plot.ly/dash/external-resources

from dash import Dash

app = Dash()

app.css.config.serve_locally = True
app.scripts.config.serve_locally = True

All 19 comments

Did you try the suggestion at the bottom of the user guide?

https://plot.ly/dash/external-resources

from dash import Dash

app = Dash()

app.css.config.serve_locally = True
app.scripts.config.serve_locally = True

Thanks for opening this, @marugari . This offline behavior is what I was wondering about too. When I try the recommended fix, I am unable to render dcc.Graph() objects. Is this expected behavior when running offline?

Graph() objects should be rendered offline. Can you post the errors you are having?

I don't get an error in the browser or the console running dash. I just don't get a page load. At the browser level, the HTML just renders "Loading..." and never gets passed that (waited for quite a while).

I'm going from memory as I am not running dash offline now, but are you importing plot from plotly.offline?

for example:

from plotly.offline import download_plotlyjs, plot

otherwise it'll still try and get the plotlyjs file from the CDN.

No, I'm not. I'm just running the first tutorial (here) which does not import anything specifically from plotly. I will try your import statement and report back.

Oh that won't help then, as they are generating the figure directly in dash. The offline library I referenced only helps when the graph is being generated in a callback. Disregard my suggestion.

Did you try the suggestion at the bottom of the user guide?

https://plot.ly/dash/external-resources

from dash import Dash

app = Dash()

app.css.config.serve_locally = True
app.scripts.config.serve_locally = True

That's it exactly. The dcc.Graph objects should be rendered offline too.

Here is a standalone example that works for me with my wifi turned off:

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash('offline example')

app.layout = html.Div([
    dcc.Graph(id='my-graph', figure={'data': [{'x': [1, 2, 3], 'y': [4, 1, 2]}]})
])

app.css.config.serve_locally = True
app.scripts.config.serve_locally = True

if __name__ == '__main__':
    app.run_server(debug=True)

dash_offline

@sbowman-mitre - Could you try this example and see if it works?

Yes, your example does render for me. That's good news!

Yes, I had added those lines to my script and it did not render. Here's the entirety of my script:

# -*- coding: utf-8 -*-
import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

# Force offline usage (also fails to render graph, issue #46)
app.css.config.serve_locally = True
app.scripts.config.serve_locally = True

app.layout = html.Div(children=[
    html.H1(children='Hello Dash'),

    html.Div(children='''
        Dash: A web application framework for Python.
    '''),

    dcc.Graph(
        id='example-graph',
        figure={
            'data': [
                {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
                {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
            ],
            'layout': {
                'title': 'Dash Data Visualization'
            }
        }
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)

My thanks to @pl77 and @chriddyp.
I think "Rendering dash apps offline"(https://plot.ly/dash/external-resources) should be independent.

Great, thanks! @sbowman-mitre - that script that you posted actually works for me OK:
dash_offline_2

Okay, good to know. That means it's something on my end. Maybe my browser (which is up-to-date Chrome)? But, good to know the general concept should be working.

Hm.. I'm not sure what it could be. I have down some browser testing on these apps. If open up the Chrome Dev Tools, are there any red errors printed out?

@chriddyp : curiously, the script loads under some conditions today. Not sure what that means; I haven't rebooted in the meantime. 🤷‍♂️ When it doesn't load, here's the devtools view:
image

Thanks for reporting @sbowman-mitre ! I've actually seen this before. In this case, the flask server is having trouble serving the large javascript bundle (1MB or larger) from the file system. I've only seen this happen on Windows machines and servers.

I'm not yet sure how to resolve this or make this more stable.

Well, doesn't sound like there's much you can do except raise it up to the flask group. You can close this issue (from my perspective, anyway).

Thanks @sbowman-mitre ! I'll close this issue but I've opened a secondary one for this more specific problem with serving files on windows: https://github.com/plotly/dash/issues/56

This was outstanding help. Thank you.

just a kind reminder, firefox addons such as "Decentraleyes" which block cdn tracking may a reason why your page not loading properly.

Was this page helpful?
0 / 5 - 0 ratings