0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Python] FirebaseのTimeoutを設定 (Cloud Functions)

Posted at

本記事の内容

Firebase Cloud FunctionsをPythonで実装する際に設定出来るタイムアウトの解説を行います。
Firebaseが公開している公式ドキュメントと、実際のソースコードを見ながら解説をしていきます。

背景

先日、生成AIのAPIを用いた関数をFirebseのCloud FunctionsにデプロイしてWebアプリを作っていました。

デプロイした関数には、実行時間がかかる処理を行っていたため、タイムアウトエラーになってしまいました。タイムアウトの時間を変更する方法が気になり、調べてみようと思いました。

目次

1. デコレータとは

デコレータとは関数やクラスの前後に特定の処理を追加出来る機能です。
Pythonでは、関数やクラスの定義する前に@をつけることで設定出来ます。

Python sample.py
@https_fn.on_request()
def fetch_data(req: https_fn.Request) -> https_fn.Response:
    #省略

上記の関数のデコレータは@https_fn.on_request()です。

2. Timeoutの設定

ソースコードはこちらになります

Python firebase-functions/options.py
@_dataclasses.dataclass(frozen=True, kw_only=True)
class RuntimeOptions:
    #other Options
    
    timeout_sec: int | Expression[int] | _util.Sentinel | None = None
    """
    Timeout for the function in sections. Possible values are 0 to 540.
    HTTP functions can specify a higher timeout.
    A value of ``RESET_VALUE`` restores the default of 60s
    The minimum timeout for a 2nd gen function is 1s. The maximum timeout for a
    function depends on the type of function: Event handling functions have a
    maximum timeout of 540s (9 minutes). HTTP and callable functions have a
    maximum timeout of 3,600s (1 hour). Task queue functions have a maximum
    timeout of 1,800s (30 minutes)
    """

ソースコードを参考にすると、timeoutのデフォルトの値は60秒になっていることが分かります。またタイムアウトの最小値は1秒で、最大540秒であることが分かります。

また、公式ドキュメントにも、最大値は540秒と記載されていました。

[公式ドキュメント]
スクリーンショット 2024-10-02 17.31.29.png

3. 実装

Timeoutの値を60秒から240秒に変更してみます。

Python sample.py
from firebase_functions import https_fn

@https_fn.on_request(timeout_sec=240)
def fetch_data(req: https_fn.Request) -> https_fn.Response:
    #省略

これでタイムアウト時間を240秒に設定することが出来ます。

4. まとめ

今回はFirebase Cloud FunctionsをPythonでデプロイする際に必要なデコレータの設定の中の1つである、Timeoutについての解説を行いました。実行時間で困ったときは参考にしてみて下さい。
また、他の設定についても投稿しているので、こちらも是非参考にしてください!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?