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



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

  • PROD云函数触发器,称为PROD_fixNameFunction
  • UAT云函数触发器,名为UAT_fixNameFunction
  • 名为TEST_fixNameFunction的TEST云函数触发器

因为我有3.env_PROD.yml.env_UAT.yml和.env_TEST.yml文件,其中环境变量集PROD、UAT和TEST位于由dotenv加载的环境变量中。

要使用的代码示例:

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'}(仅在本地使用,以使用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(。

我看到存在dotenv-python来加载环境变量,但我在运行时找不到一个用dotenv-ppython库或其他库读取的参数重命名python的def函数的例子。

有人有一个在python中运行良好的解决方案,可以通过environmentvariable加载函数的新名称,并将def functionname重命名为[prefix]functionname,就像前面在nodejs中使用环境变量load作为前缀的例子一样

非常感谢您的支持。

您想要的是一个动态函数名。以下是您在Python中的操作方法:

def my_function(request):
return "Success"
function_name = "whatever"  # Get this from your env file
locals()[function_name] = my_function

那么whatever()函数将可用于调用。

最新更新