在运行时为云函数 GCP 重命名 python 函数定义
Rename python function def in runtime for cloud function GCP
在 GCP nodejs 云函数中,我使用 dotenv 以简单模式在运行时重命名触发器调用的函数:
我通过 dotenv-yaml 从 env_TEST.yml 配置文件中读取部署函数的名称
根据 yaml 文件中的 ENVIRONMENT 变量,我将拥有
- 调用了 PROD 云函数触发器 prod_fixNameFunction
- 调用了 UAT 云函数触发器 uat_fixNameFunction
- TEST 云函数触发器已调用 test_fixNameFunction
因为我有 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()
函数就可以调用了。
在 GCP nodejs 云函数中,我使用 dotenv 以简单模式在运行时重命名触发器调用的函数: 我通过 dotenv-yaml 从 env_TEST.yml 配置文件中读取部署函数的名称 根据 yaml 文件中的 ENVIRONMENT 变量,我将拥有
- 调用了 PROD 云函数触发器 prod_fixNameFunction
- 调用了 UAT 云函数触发器 uat_fixNameFunction
- TEST 云函数触发器已调用 test_fixNameFunction
因为我有 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()
函数就可以调用了。