Using FastAPI for Streamlit


Greeting I am currently making a routing web app using Or-tools calculation and visualizing everything using Streamlit.

For pushing this apps into deployment stage ( on AWS cloud) is there any benefit to converting all the calculation function on the backend of streamlit apps to a FastAPI call or should I just keep it in streamlit for now ?

  • The calculation involved interacting with a hosted database , an OSRM routing engine running in the same machine and it tooks around 5 mins to get a desired solution from Or-tools optimizer.

I am not very knowledgeable in web development so sorry for the technical question.

separation of business logic from ui logic is best… in long/short term…

I’ve done both ways and prefer a separate REST API backend, especially for long running jobs on the API server. You will however have the issue of notifying Streamlit that calculation results are ready. I’ve dealt with that by storing results on the server in a database such as SQLite, and having a suitable TTL on the cached load data method in Streamlit, or having a refresh button which clears the cache and reruns Streamlit, which will get the latest results. These solutions are a bit clunky but work fine for certain use cases. Another advantage of having a (Fast)API is you can serve other clients, not just Streamlit clients.

If your calculations can be run continuously then Streamlit need only get the latest results stored in the DB.