0

I am trying to host a Streamlit app on Azure Compute Instance resource.

It appears that accessing the instance is possible through https://{instanceName}-{internalPort}.northeurope.instances.azureml.ms (with an Azure-provided security layer in between).

To smoketest this I created a simple Flask app and verified I could access it: I was able to access my dummy app on https://[REDACTED]-5000.northeurope.instances.azureml.ms/.


Attempt 1: Basic Configuration

Now I want to serve my Streamlit app. Initially I wanted to eliminate error sources and simply check if wires are connected correctly, and my app is simply:

import streamlit as st

st.title("Hello, World!")

Running this streamlit app (streamlit run sl_app.py) gives:

2022-03-28 11:49:38.932 Trying to detect encoding from a tiny portion of (13) byte(s).
2022-03-28 11:49:38.933 ascii passed initial chaos probing. Mean measured chaos is 0.000000 %
2022-03-28 11:49:38.933 ascii is most likely the one. Stopping the process.

  You can now view your Streamlit app in your browser.

  Network URL: http://[REDACTED]:8501
  External URL: http://[REDACTED]:8501

Trying to access this through https://[REDACTED]-8501.northeurope.instances.azureml.ms/ I can access the app, but the "Please wait..." indicator appears indefinitely:

enter image description here

Attempt 2: Updated Streamlit Config

Inspired by App is not loading when running remotely Symptom #2 I created a Streamlit config.toml with a reconfiguring of server/browser access points, and ended up with the following:

[browser]
serverAddress = "[REDACTED]-8501.northeurope.instances.azureml.ms"
serverPort = 80
gatherUsageStats = false

[server]
port = 8501
headless = true
enableCORS = false
enableXsrfProtection = false
enableWebsocketCompression = false

Running the app now gives:


  You can now view your Streamlit app in your browser.

  URL: http://[REDACTED]-8501.northeurope.instances.azureml.ms:80

However, I still get the infinite Please wait-indicator. Diving a little bit deeper reveals something related to a wss stream? Whatever that is?

enter image description here

I suspect that what I'm seeing is due to the fact that Azure automatically pipes my request from http:// to https://, and this for some reason rejects the stream component that Streamlit uses?


Note: Various IP addresses and hostnames are REDACTED for the sake of security :-)

casparjespersen
  • 3,460
  • 5
  • 38
  • 63

1 Answers1

0

The major issue happened here is to access the SSL certificate. Here is a perfect guide to follow to deploy streamlit on Azure.

https://towardsdatascience.com/beginner-guide-to-streamlit-deployment-on-azure-f6618eee1ba9

https://towardsdatascience.com/beginner-guide-to-streamlit-deployment-on-azure-part-2-cf14bb201b8e

First link is to deploy without any errors and second link is to activate with SSL certificate to make the URL as HTTPS from HTTP.

Sairam Tadepalli
  • 1,563
  • 1
  • 3
  • 11