1
2

Firebase Cloud Functions のデコレータ設定(Python) memory編

Posted at

本記事の内容

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

背景

ファイルの生成やなどを行う関数をデプロイしようとしました。
ところがデフォルトのメモリの設定ではオーバーフローしてしまい、メモリの量を増やす必要がありました。

目次

1. デコレータとは

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

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

上記の関数fetch_data()のデコレータは@https_fn.on_request()になります。

2. Memoryの設定

関数が使用するメモリの量を指定出来ます
Firebaseのソースコード内のMemoryOptionクラスにメモリの値が定義されています。

firebase_functions.options.py
class MemoryOption(int, _enum.Enum):
    """
    Available memory options supported by Cloud Functions.
    """

    MB_128 = 128
    MB_256 = 256
    MB_512 = 512
    GB_1 = 1 << 10
    GB_2 = 2 << 10
    GB_4 = 4 << 10
    GB_8 = 8 << 10
    GB_16 = 16 << 10
    GB_32 = 32 << 10

ビット演算子が用いられていますが、指定出来る値は、
128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768のいずれのようです。(全て単位はMBです)

なお、デフォルトの値は256です。

メモリの料金

Firebaseのメモリは以下の料金形態になっています。

スクリーンショット 2024-09-22 21.19.43.png

公式ドキュメントによると、メモリの値が増えると料金も比例して増えるようです。
そのため、定義する関数の処理の内容に応じて設定する必要があります。

3. 実装

Memoryの値を256MBから512MBに変更してみます。

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

これでメモリを512MBに設定することが出来ます。

4. まとめ

今回はFirebase Cloud FunctionsをPythonでデプロイする際に必要なデコレータの設定の中の1つである、Memoryについての解説を行いました。是非参考にして下さい!

1
2
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
1
2