在运行时为云函数 GCP 重命名 python 函数定义

Rename python function def in runtime for cloud function GCP

在 GCP nodejs 云函数中,我使用 dotenv 以简单模式在运行时重命名触发器调用的函数: 我通过 dotenv-yaml 从 env_TEST.yml 配置文件中读取部署函数的名称 根据 yaml 文件中的 ENVIRONMENT 变量,我将拥有

因为我有 3 个 .env_PROD.yml .env_UAT.yml 和 .env_TEST.yml 文件,环境变量在 dotenv 加载的环境变量中设置了 PROD、UAT 和 TEST。

要使用的代码示例:

require('dotenv-yaml')**.config({ path: '.env_TEST.yml' })**;
const prefix = process.env.ENVIRONMENT === "PROD"
               ? "prod_"
               : (process.env.ENVIRONMENT === "UAT"
                  ? "uat_"
                  : "test_"
                 );

exports[`${prefix}fixNameFunction`] = async (req, res) => {
...
...
}

.config({ path: '.env_TEST.yml' }) 部分仅在本地使用,用于在本地云函数中开发 google nodejs 和其他语言的库函数框架.

这对于在云函数中部署具有不同名称的云函数并使用正确名称 prod_functionName 和 uat_functionName 和 test_functionName 触发器非常有用,在这种情况下,您将拥有 3 个函数适用于正确加载所有环境参数的 TEST、UAT 和 PROD 环境。

通过 gitLab CI/CD gitlab-ci.yml 我传递正确的 env 文件来使用 (env_TEST.yml, env_UAT.yml, env_PROD.yml) 取决于开始 pipeline.

的标签名称

我看到存在 dotenv-python 来加载环境变量,但我找不到运行时的示例来 rename def 函数python 参数由 dotenv-python 库或其他库读取。

有人有一个解决方案在 python 中工作正常,通过环境变量加载函数的新名称,并将 def functionname 重命名为 [prefix]functionName,如前面在 nodejs 中加载环境变量的示例在前缀 ?

非常感谢您的支持。

你要的是动态函数名。以下是 Python 中的操作方法:

def my_function(request):
    return "Success"

function_name = "whatever"  # Get this from your env file

locals()[function_name] = my_function

然后 whatever() 函数就可以调用了。