LoginSignup
12
15

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-01-31

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

screencapture-console-cloud-google-cloud-build-builds-region-global-1bc7f5ee-1855-46f3-b9ae-ad57bbbc1581-2021-01-31-21_39_37.png

デプロイ

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/

screencapture-kabu-analysis-leopsotyca-uc-a-run-app-2021-01-31-22_21_57.png


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

12
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
15