Part2前回、起動の確認まで行いましたので、今回はPythonで実装するAPIとバックグラウンドタスクの処理を実装します。開発をスムーズに行うための便利なツールなどを紹介しています。main.pyでStarletteを起動するAPIのエンドポイントを追加するバックグラウンドタスクを追加するpytestで非同期処理をテストするCI/CDはCloudBuildで利用して、継続的にテスト、CloudRunへデプロイできるようにするCloudRunが起動しているのを確認したら削除するさらっとソースの構造を確認していきましょう。実行するmain.py以外はsrcディレクトリに配置しています。ignoreファイルです。コンテナでインフラも運用しているので、どのプロジェクトもDocker,CloudBuildの設定が入っています。この記事の目的も最終はGCPでクラウドランで稼働させることなので、CloudBuildにCI/CDとデプロイのステップを書きます。PipfileはPythonの仮想環境を作るライブラリで、DevとProdで依存関係を分けてインストールするのが楽なので使っています。最近はどうかわからないですけど、pipのバージョン最新にすると依存関係でうまくいかないことがあるので、19.23でバージョンは固定しています。requirements.txtで一応作って置いておきます。tests.pyといった構成になっています。エンドポイントを追加するGitのソースが手元にない方はまずはクローンして、環境構築のPart1を進めてください。GitHub.https://github.com/ksh3/starlette-cloudrun前回の続きの方はアプリと依存環境を起動しましょう。PostgreSQLが起動していないことはよくあるので、うまくいかないときはコマンドで確認してみてください。starlette-cloudrun_postgres_1準備がよろしければ早速エンドポイントを追加して、モデルデータを返すAPIを作ってみましょう。JSONResponse(message)リクエストパスから値を取得したい場合はrequest.path_paramsから指定したpathキーで取り出します。Requestオブジェクトの継承元がHttp関連でRequestはasgiの実装になっています。注入する値はこれらの実装見ればだいたい分かりますので参照してください。url_path.make_absolute_url(base_url=self.base_url)それではAPIへリクエストを送ってみましょう。OKpathパラメーターの取得、DBからのクエリ取得、jsonレスポンスを返すことに成功していますね。CURLでさっと書ける位ならいいのですが、実際開発では複雑なパラメーターがあったりで、APIのチェックはCURLだと面倒ですよね、ほかにもWebsocketだとWSCATだとか、コマンドラインで確認したりとやっている方もいるかと思いますが、オススメの拡張機能があるので是非使ってみてください。これがあればWebsocketもAPIも簡単にデバッグが簡単にできて、開発が楽になるとおもうのでおすすめです。最近はマイクロサービス化が進んできていて、アプリを作る場合、APIで作ることが増えてきているので、コマンドでデバッグがし辛いときは是非使ってみてください。次回はバックグラウンドタスク実装タスクキューのような待たずに実行させたい処理の追加として、参照回数をインクリメントさせる機能の実装について解説したいと思います。GitHub.https://github.com/ksh3/starlette-cloudrun/tree/topic/part1-2今回の内容はこちらにコミットしています。Part1前に紹介したPythonの軽量APIフレームワークStarletteのGCP(CloudRun)で、開発からリリースまで対応したGitリポジトリを作成しているので、トピックごとに詳細と開発の仕方について紹介しています。Part3今回は実装したAPIにバックグラウンドで実行する非同期処理を実装します。APIで受けとったリクエストにレスポンスを返した後、async/awaitを使って、非同期で処理を実行します。