python / Starlette
作成日:2020/2/28
更新日:2020/3/2
速くて軽量なAPI、Starletteを使ってGCPにデプロイする Part1
前に紹介したPythonの軽量APIフレームワークStarletteのGCP(CloudRun)で、開発からリリースまで対応したGitリポジトリを作成しているので、トピックごとに詳細と開発の仕方について紹介しています。
Gitクローンしたソースを用意して、Dockerで環境を構築する
以下のリポジトリからコードをクローンして、docker-composeでPostgreSQLを起動させます。
ksh3/starlette-cloudrun
Starlette framework on GCP CloudRun. Contribute to ksh3/starlette-cloudrun development by creating an account on GitHub.
今回すすめるトピック
Gitでリポジトリをクローンする
docker-composeで依存しているミドルウェアを起動する
python main.pyでStarletteを起動する
APIのエンドポイントを追加する
バックグラウンドタスクを追加する
pytestで非同期処理をテストする
CI/CDはCloudBuildで利用して、継続的にテスト、CloudRunへデプロイできるようにする
CloudRunが起動しているのを確認したら削除する
以下のコマンドを実行してDockerコンテナを作ります。初期データも一緒に作成していて、正常に実行できていれば、テーブル作成とレコードが1件追加されている状態になります。
git clone git@github.com:ksh3/starlette-cloudrun.git
cd starlette-cloudrun
docker-compose up -d
----------------------------------------------------
BUILD LOG…
----------------------------------------------------
# src/fixtures/000-sample-data.sh
#!/bin/bash
psql -U docker -d docker << EOL
create database docker;
create table robots (id int PRIMARY KEY, name varchar, created_at timestamp);
insert into robots (id, name, created_at) values (1, 'GUIDO', '2020-01-01');
EOL
続けて、仮想環境の作成、ライブラリの追加をpipenvで行います。
Pipfile.lockはOS,ハードウェアによって、ライブラリインストール時にコケる原因になるので、一旦削除してから実行してください。
rm Pipfile.lock
pipenv install
----------------------------------------------------
INSTALL LOG…
----------------------------------------------------
pipenv shell
python main.py
# OSによってはポートを開く確認ダイアログが出るので許可する
実行するとログにPostgreSQLへのコネクションが確立しているか出力されています。起動できない場合はDBへの接続に失敗しているのが原因ですので、最初のDockerコンテナ作成がうまく行っていないと思います。おそらく別のサービスがポート5432を使用中かもしれませんね。その場合はポート使っているサービスを落とすか、もしくはソースコード。docker-compose.yamlを編集して5432ポート以外を設定してみるといいでしょう。それでもうまく行かないときはログ貼りつけて@LlcLoftに送ってもらえれば確認してみます🤔
関連記事
python / Starlette
作成日:2020/2/21
更新日:2020/3/2
軽量かつ非同期で実装できるおすすめのフレームワーク、Starlette👍
標準的なWebシステムを作る場合はDjangoがおすすめですが、軽量で非同期なAPIを作りたいこともよくあります。そんな場合に最近よくつかっているのがStarletteというasgiに対応したフレームワークです。
python / Starlette
作成日:2020/3/1
更新日:2020/3/3
速くて軽量なAPI、Starletteを使ってGCPにデプロイする Part2
前回、起動の確認まで行いましたので、今回はPythonで実装するAPIとバックグラウンドタスクの処理を実装します。また、開発をスムーズに行うための便利なツールなどを紹介しています。
ポリシー
この記事のすべてまたは一部の複製は、著作権者の同意なしでは禁止されています。
引用については著者名と記事のURLが表示されている場合に限り認められます。