Cool!<p>requests_cache caches HTML requests into one SQLite database. [1] pandas-datareader can cache external data requests with requests-cache. [2]<p>dask.cache can do opportunistic caching (of 2GB of data). [3]<p>How does streamlit compare to jupyter voila dashboards (with widgets and callbacks)? They just launched a new separate github org for the project. [4] There's a gallery of voila dashboard examples. [5]<p>> <i>Voila serves live Jupyter notebooks including Jupyter interactive widgets.</i><p>> <i>Unlike the usual HTML-converted notebooks, each user connecting to the Voila tornado application gets a dedicated Jupyter kernel which can execute the callbacks to changes in Jupyter interactive widgets.</i><p>> <i>- By default, voila disallows execute requests from the front-end, preventing execution of arbitrary code.</i><p>[1] <a href="https://github.com/reclosedev/requests-cache" rel="nofollow">https://github.com/reclosedev/requests-cache</a><p>[2] <a href="https://pandas-datareader.readthedocs.io/en/latest/cache.html" rel="nofollow">https://pandas-datareader.readthedocs.io/en/latest/cache.htm...</a><p>[3] <a href="https://docs.dask.org/en/latest/caching.html" rel="nofollow">https://docs.dask.org/en/latest/caching.html</a><p>[4] <a href="https://github.com/voila-dashboards/voila" rel="nofollow">https://github.com/voila-dashboards/voila</a><p>[5] <a href="https://blog.jupyter.org/a-gallery-of-voil%C3%A0-examples-a2ce7ef99130" rel="nofollow">https://blog.jupyter.org/a-gallery-of-voil%C3%A0-examples-a2...</a><p>Acess control and resource exhaustion are challenges with building any {Flask, framework_x,} app [from Jupyter notebooks]. First it's "HTTP Digest authentication should be enough for now"; then it's "let's use SSO and LDAP" (and review every release); then it's "why is it so sloww?". JupyterHub has authentication backends, spawners, and per-user-container/vm resource limits.<p>> <i>Each user on your JupyterHub gets a slice of memory and CPU to use. There are two ways to specify how much users get to use: resource guarantees and resource limits.</i> [6]<p>[6] <a href="https://zero-to-jupyterhub.readthedocs.io/en/latest/user-resources.html" rel="nofollow">https://zero-to-jupyterhub.readthedocs.io/en/latest/user-res...</a><p>Some notes re: voila and JupyterHub:<p>> <i>The reason for having a single instance running voila only is to allow non JupyterHub users to have access to the dashboards. So without going through the Hub auth flow.</i><p>> <i>What are the requirements in your case? Voila can be installed in the single user Docker image, so that each user can also use it on their own server (as a server extension for example).</i> [7]<p>[7] <a href="https://github.com/voila-dashboards/voila/issues/112" rel="nofollow">https://github.com/voila-dashboards/voila/issues/112</a>