本日のお悩み
Google Colabでstreamlitアプリを動かしたい
本日の処方箋
ngrok
を使用してurlを取得して動かす
以下手順を記載
-
ngrokのアカウントを作成し設定する
-
ngrokへアクセスしgithub経由でアカウントを作成しAuthtokenを取得
-
ngrokのHPはこちら
ngrokで、接続するために必要な「Authtoken」を設定。
以下のコードの、
!ngrok authtoken YourAuthtoken
における
YourAuthtokenの箇所を、自分のAuthtokenに置き換える。 -
!ngrok authtoken YourAuthtoken
-
-
アプリの起動
- streamlitのrunコマンドでアプリを起動
-
# (&>dev/null&)で出力を表示させず、バックグラウンドで実行する !streamlit run app.py &>/dev/null&
-
URLの取得
-
from pyngrok import ngrok # プロセスの終了 ngrok.kill() # 接続 url = ngrok.connect("8501").public_url
- ngrokのプロセスを終了した上で、新たにポートを指定して接続。接続するとurlを取得。(httpが帰ってくるため後ほどの下記の関数でhttpsに変換)
ngrokの無料プランだと同時に1つのプロセスしか動かせないため、接続によるエラーが発生した場合はランタイム
→セッションの管理
で不要なColabのプロセスを終了させる。
-
-
動作確認
- urlのhttpの部分をhttpsに変換する関数
-
def convert_http_to_https(url): # urlの先頭がhttpだったらhttpsに変更 if url.startswith("http://"): # 1は置換する回数(1を指定することで、元のURL内で最初に見つかった "http://" の部分だけを "https://" に置き換え、他の "http://" は変更されない。) url = url.replace("http://", "https://", 1) return url
-
最後に変換したurlを確認し、動作を確認する
-
print(convert_http_to_https(url))
-