Streamlitで作成した株価アプリをWEB公開した(キャッシュ説明あり)


Streamlitで作成した株価アプリをWEB公開した

株価アプリは前回作成したものを使う → Streamlitを使って株価データをグラフ表示した
デプロイ先はCloudRunを使う

キャッシュ化

このままWEB公開するとBigQueryアクセスが多くなるのでキャッシュ化を行う
@st.cacheデコレーターを付けることで返り値をキャッシュする
@st.cacheは引数種類別にキャッシュする
2回目以降はキャッシュを使いBigQueryにアクセスしない
allow_output_mutationをTrueにすると返り値が変わってもエラーにならない

@st.cache(allow_output_mutation=True, suppress_st_warning=True)
def _get_stock(stock_no: str, start_date: str, end_date: str):
    ....

Docker環境準備

Dockerfile作成
Cloud Runで動かすのでポート8080に設定する

FROM python:3.7.4

WORKDIR /app
ADD . /app

RUN apt-get update && apt-get clean;
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

ENV TZ Asia/Tokyo
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV GOOGLE_APPLICATION_CREDENTIALS /app/config/xxx.json

EXPOSE 8080

CMD streamlit run --server.port 8080 app.py

ビルド

$ docker build -t kabu-analysis .

起動

$ docker run --name kabu-analysis \
-p 8080:8080 -v ~/Sites/kabu-analysis/:/app -it --rm kabu-analysis

Cloud Run へのデプロイ

ビルド

DockerイメージをCloud Buildにビルドする
kabu-analysisはイメージ名

$ gcloud builds submit --tag gcr.io/weekend-hackathon/kabu-analysis

デプロイ

Cloud Run を使いビルドしたイメージをデプロイ

$ gcloud run deploy kabu-analysis --project=weekend-hackathon --image=gcr.io/weekend-hackathon/kabu-analysis --region=us-central1 --platform=managed --no-allow-unauthenticated
Deploying container to Cloud Run service [kabu-analysis] in project [weekend-hackathon] region [us-central1]
✓ Deploying... Done.
  ✓ Creating Revision...
  ✓ Routing traffic...
  ✓ Setting IAM Policy...
Done.
Service [kabu-analysis] revision [kabu-analysis-00003-wuq] has been deployed and is serving 100 percent of traffic.
Service URL: https://kabu-analysis-leopsotyca-uc.a.run.app

権限追加

$ gcloud run services add-iam-policy-binding kabu-analysis  \
> --region=us-central1 --member="allUsers" --role="roles/run.invoker" --platform=managed
Updated IAM policy for service [kabu-analysis].
bindings:
- members:
  - allUsers
  role: roles/run.invoker
etag: BwW6MhTA8fg=
version: 1

URLにアクセスしサイトが表示されれば完了
https://kabu-analysis-leopsotyca-uc.a.run.app/


次回は詳しく可視化した株価グラフを作成していきます
いいね!と思ったら LGTM お願いします