当前位置: 首页 > 知识库问答 >
问题:

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

罗伟志
2023-03-14

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

  • 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'})仅在本地使用,用于在本地云函数中开发google库函数-nodejs和其他语言的框架。

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

作者:gitLab CI/CD gitLab CI。yml根据启动管道的标记名,传递正确的env文件以供使用(env_TEST.yml、env_UAT.yml、env_PROD.yml)。

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

有人有一个在python中工作正常的解决方案,通过环境变量加载新的函数名,并将def函数名重命名为[前缀]函数名,就像之前在前缀为环境变量加载的nodejs中的例子一样?

非常感谢你的支持。

共有1个答案

唐恺
2023-03-14

您需要的是一个动态函数名。以下是在Python中的实现方式:

def my_function(request):
    return "Success"

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

locals()[function_name] = my_function

然后可以调用where()函数。

 类似资料:
  • 我对GCP非常陌生,不确定云功能是否是解决这个问题的方法。 我有一个python脚本,它使用weeepy调用twitter api,并生成一个csv文件,其中包含该特定用户名的tweets列表。 因此,我的问题是: A. GCP云功能是这项工作的正确工具吗?或者这需要更广泛的东西,因此需要一个GCP VM实例? B.代码中需要更改什么才能在GCP上运行? 如有任何关于方向的帮助/建议,也将不胜感激

  • 函数名称:重命名文件 函数功能: 修改文件名称 函数方法 flag = file.writeString (path,name) 参数 类型 必填 说明 path string 是 需要修改的文件路径 str string 是 修改后的文件名称 返回值 类型 说明 flag boolean true - 修改成功,false - 修改失败 函数用例 path = "/sdcard/LuaBox/P

  • 我有一个从pub/sub消息触发的云函数。此函数从不显式确认源代码中的消息。 那么,如果确认在源代码中从未发生过,这个函数什么时候确认pub/sub消息呢? 进入test_topic并发布以Go为文本的消息。 test_function日志中将出现错误。但是,只有一个函数调用会出现错误,即使几天后也会出现这种情况。

  • 我有一个谷歌云功能订阅了一个主题。当需要向用户发送电子邮件时,我们的Go API会向主题发布一条消息。GCF创建电子邮件对象并将其发送到SendGrid。问题是,90%的情况下,云函数会被调用两次。 订阅的确认截止日期是600秒,文件中明确说明GCF内部确认。 我知道PubSub保证后台功能至少一次交付和GCF至少一次执行。但是,这种情况在大多数情况下都会发生,我很确定这也是不对的。 有人有什么想

  • 目前知晓云云函数支持的 Node.js 开发语言包括如下版本: Node.js 8.9 代码编写格式 在云函数中使用 Node.js 编程,需要定义一个 Node.js 函数作为入口,一个简单的函数定义如下: exports.main = function helloWorld(event, callback) { let name = event.data.name callback(n

  • 函数名称:重命名文件(夹) 函数功能:修改文件(夹)名称 函数方法 bool,msg = os.rename (oldname, newname) 参数 类型 必填 说明 oldname string 是 修改前的文件路径及名称 newname string 是 修改后的文件路径及名称 参数 类型 说明 bool boolean 成功 - tue,失败 - nil msg string 失败返回的