Scaling up a Dash.jl application?

I’m running a Dash.jl application simply as:

run_server(app, "0.0.0.0", 8081)

Is it possible to scale it up easily (e.g. by adding more threads)?

For Python at least I found in the docs (lost where I found it exactly):

Dash apps are frequently deployed across multiple processes or threads. In these cases, each process or thread contains its own memory, it doesn’t share memory across instances.

Look at the Python docs, they are extensive. Look at the Julia docs and see if comparable or something missing.

At the time I was programming in Julia professionally, and explored Genie.jl but chose Dash, and not because it was better in Julia, I chose Dash in Python, mostly because of the docs, I was new to this. This was before Dash.jl got official company support, it was a work-in-progress.

Python Dash (at least, or all languages?) has enterprise support (paid for, likely with more code in addition to the open source components), and they claim award winning customer support. I don’t know if it translated to using Dash with Julia, but you could ask. The design translated, at least open source part, and I think you can have scalability with it in Julia, at least Python without enterprise addon. Though I’m not sure, it seems like a thing that might apply there.

[Dash also supports R, and I recall when company support was added for Julia, as the third language, and now I see F# in the docs, intriguingly C# not mentioned, even though based on .NET. I suppose it started like the Julia “offering” with some F# enthusiast.]

1 Like

Thanks for the answer, Much appreciated!

I’m running the app as a deployment on a kubernetes cluster and a quick fix for now was to scale it up by adding more replicas of the app and let the service and ingress do load balancing. However, it would be nice to know if there are possibilities within Dash.jl to e.g. do threaded or distributed callbacks.

Edit:
The docs under advanced callbacks: “ Whether or not these requests are executed in a synchronous or asynchronous manner depends on the specific setup of the Dash back-end server. If it is running in a multi-threaded environment, then all of the callbacks can be executed simultaneously, and they will return values based on their speed of execution. In a single-threaded environment however, callbacks will be executed one at a time in the order they are received by the server.”

I guess starting up julia with -t argument will provide multithreaded callbacks out of the box :thinking: