I am running my streamlit app on heroku and my procfile looks like:
web: sh setup.sh && streamlit run main.py
if I were to add
&& python script.py
Would it run that script? And, more importantly, is there a way for my streamlit app to access either the terminal, or a value from that script?
That script essentially gets data and stores it into a database and runs either off my local pc or a raspberry pi. I’d like to be able to monitor it from the UI I built. If I could run it all from streamlit it would be even better…
One possible way to have your Streamlit app use terminal to run scripts could be to use the
In the following example, I have a plot.R file that generates a plot.png image. From within the Streamlit app, I use
subprocess to run the R script (plot.R) and use
st.image to display the image.
import streamlit as st
from PIL import Image
process = subprocess.Popen(["Rscript", "plot.R"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
result = process.communicate()
image = Image.open('plot.png')
Note: You may replace
bash if you want to run scripts via Bash.
Hope this helps.
I’ll have to try it out, thanks!