【问题标题】:Event trigger to run python script from Google Cloud从 Google Cloud 运行 python 脚本的事件触发器
【发布时间】:2018-02-20 16:30:29
【问题描述】:

我有一个 python 脚本,它读取 csv 文件,根据 csv 中的数据在 bigquery 中创建表,并在运行时将数据加载到表中。每当发生事件(例如文件到达指定存储桶)时,我想触发此脚本。我的 Python 脚本存在于 vm 实例上(直到现在,用于从 vm 实例运行脚本)。有没有办法根据事件触发器执行这个脚本?

【问题讨论】:

    标签: python google-cloud-platform


    【解决方案1】:

    Google Cloud Storage 的一项名为“Object Change Notifications”的功能在这里可以派上用场。这会将通知推送到 Web 挂钩,您可以在其中使用处理代码来处理事件(在 AppEngine 上运行此事件的示例为here,但您也可以将其实现为例如 Flask 端点)。

    另一个选择是将Pub/Sub Notifications 与 Cloud Storage 结合使用,以防您觉得更舒服。然后,您可以使用Pub/Sub Python SDK 收听您的事件到达的特定主题,并使用您已经编写的代码来处理这些事件。

    【讨论】:

    • 非常感谢您提供文档链接。通过它,希望它会有所帮助。
    • 嗨..有没有办法在事件触发器中直接调用 python 脚本?我的 index.js 在事件触发器中有以下代码:exports.helloGCS = function (event, callback) { const file = event.data; if (file.resourceState === 'not_exists') { console.log(File ${file.name} deleted.); } else if (file.metageneration === '1') { console.log(File ${file.name} uploaded.); } 其他 { console.log(File ${file.name} metadata updated.); } 打回来(); };我可以只从这个文件中以任何方式调用放置在 vm 实例上的 python 脚本吗?
    • 你能提供更多关于你想要实现的细节吗?您正在部署的 Google Cloud 函数上方的代码是否用于处理事件?您使用的是对象更改通知还是 Pub/Sub?
    • 尝试从 CloudFunction 代码调用 Python 脚本。尝试点击此链接:github.com/extrabacon/python-shell 在 index.js 中编写了以下代码: var PythonShell = require('python-shell'); PythonShell.run('my_script.py', function (err) { if (err) throw err; console.log('finished'); });但出现错误:部署失败:函数加载错误:无法加载文件 index.js 中的代码。您是否在 package.json 依赖项中列出了所有必需的模块?详细的堆栈跟踪:错误:找不到模块'python-shell'你能帮忙吗?
    • 嗨希哈。不幸的是,这是不可能的。 Cloud Function 是一个一次性的独立单元,可以执行您编写的代码;完全无服务器。它无法访问您指定的 Python 脚本。您可以在 Cloud Function(在 NodeJS 中)中实现您在 Python 中的逻辑,也可以开发一个 Python 服务器来处理发送到云中某个端点的事件(在部署对象更改通知时指定)。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    相关资源
    最近更新 更多