st.file_uploader reruns the complete app and returns to main page after file uploads
Steps to reproduce
Below func1 is called from another page having multiple tabs built using st.tabs
# st.text_input(label="Enter File Name")
# st.text_input(label="Enter Text Column Name")
uploaded_file = st.file_uploader("Please choose an Excel or CSV file for Labelling", type=['xlsx', 'csv'])
submitted1 = st.form_submit_button('Submit 1')
if uploaded_file is not None:
data = pd.read_excel(uploaded_file)
If applicable, please provide the steps we should take to reproduce the error or specified behavior.
Explain what you expect to happen when you run the code above.
Expected behavior is that file content is read by further code for processing of data
application is re running and returning to login page
Explain the undesired behavior or error you see when you run the code above.
If you're seeing an error message, share the full contents of the error message here.
### Debug info
- Streamlit version:1.25
- Python version:3.9
strangely when I added time.sleep(20) after st.file_uploader() functionality, file got stored and the remaining code lines worked fine
It could be that the CSV file processing requires time for computation and that
time.sleep(20) provides ample time for it to complete its processing before proceeding further in the workflow.
Perhaps you can figure out how to detect that the processing is completed and replace the
time.sleep(20) with that. For example, generation of an output file, infer from anything that indicates that the calculation is completed, etc.
Hope this helps!
Thanks for replying. Actually, even with no computation in place, st.file_uploader is rerunning the complete app on file upload (and users gets back to login page), not sure why app needs to rerun completely with interactive widgets, I have tried using session_state as well but apparently only time.sleep(20) seems to let file gets uploaded properly and then if I have further interactive buttons after file uploading, then again app reruns based on button click. Is this unusual or its the way streamlit is designed ? Also, is there any proper work around for same ?