How about this semi-solution heavily based on Creating a PDF file generator - #2 by ash2shukla
import base64
import time
import streamlit as st
import pandas as pd
def long_computation():
time.sleep(15)
return pd.Series(range(1000), name='number')
@st.cache
def convert_csv(data):
return data.to_csv(index=False).encode('utf-8')
def create_download_link(val, filename):
b64 = base64.b64encode(val)
return f'<a href="data:application/octet-stream;base64,{b64.decode()}" download="{filename}.csv">Download file</a>'
st.write(' ... doing long computation ...')
res = long_computation()
st.success('Long computation done!')
csv = convert_csv(res)
download_url = create_download_link(csv, 'test')
st.markdown(download_url, unsafe_allow_html=True)