I was wondering peoples thoughts on using Panel for something like a large scale application, with possibly thousands of users. Is there any reason to think that this is not possible?
The multi page application I have been building has authentication using Okta, is running on Azure, and uses many of panels awesome components from pydeck/deckgl to lots of tabulator instances which take in user inputs aswell as a vast array of the panel widgets.
I already have a handful of users logging in and using the application and it is running very well.
As my application grows, should I be worried about anything going into production/public use? A lot of panel references revolves around projects for data science and the like. But I canât see why this canât be scaled up to a âproperâ web application.
Would be great to hear the communitiesâ thoughts!
It will be interesting to hear thoughts. I donât know if there are any examples of âlargeâ applications. Fundamentally, it is all just a tornado app, so it should scale. In practice, you may need make sure that a) you really never block the main thread - this means youâll need to use async/threads/workers depending on your app and b) Scale your server or deployment strategy accordingly to make sure you have enough resources for all users.
Yep both points make sense.
a) I have used async for long running calculations, however this is one of my main concerns, that one user instance will be affected by another blocking calculation if not foreseen, and even calculations that donât seem slow will then obviously compound with scale. But I guess that is something that when running on a single server will always be something you have to deal with.
b) Scaling the server has been super easy running on Azure, simple case of changing to a higher tier which is great
Good luck! Iâd definitely start with whatâs in How-to â Panel v1.3.0 as mentioned above, trying to understand what new resources are allocated on the server when a user visits or performs various actions. You should be able to get major reductions in the resource requirements when you understand that, using the techniques outlined (e.g. caching).