firebase / firebase/firebase-functions-python

Async support

オープン
#135 コメント 17 件 リアクション 10 件 担当者 0 名 GitHub で見る
feature-request
主要言語
Python
スター
167
フォーク
34
PR マージ指標
30日以内にマージされた PR はありません

説明

Would it make sense to support async functions here, so that the event handlers could be called in an async manner and consequently call async libraries?

This way a single instance could be handling more requests in parallel, for example if the cloud function calls several external APIs in a sequence to complete a process, and spends most of the time just waiting for responses, and uses only a little memory and CPU in general.

It is possible to call async code from the current sync functions, but it does not help with scalability, as the cloud function itself still blocks during the whole operation. This can help to do things in parallel in a cloud function, but not with sequential operations, which are common at least in our use case.

The original JS runtime is async, like all things Node, but also Python has standard async in version 3. Consequently, firebase-admin-python has worked on adding async support, since google-auth added async support in 2021. https://github.com/firebase/firebase-admin-python/issues/104

> Hey Folks, We just released [v5.3.0](https://github.com/firebase/firebase-admin-python/releases/tag/v5.3.0) which added async support for the Cloud Firestore API. This is the first step into fulfilling this FR so please give it a try and let us know what you think!

Starlette is a popular, lightweight ASGI framework which could maybe used for this, the same way Flask is for the sync version? https://www.starlette.io/

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

ソースファイル、テスト、エントリポイントはどれも名前が挙げられていません。まず、現在の同期イベントハンドラーのエントリポイントを整理し、引用されている Starlette と firebase-admin-python の非同期対応を確認してください。完了条件は、非同期ハンドラーのモデルが定義され、そのランタイム統合が行われ、説明されている逐次および並行ユースケースに対するカバレッジが文書化されていることです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
backend, cloud
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
静か
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。