加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何通过云函数调度用Python编写的Dataflow管道?

发布时间:2020-12-20 13:16:29 所属栏目:Python 来源:网络整理
导读:This article解释了如何通过云函数执行用java编写的管道.但是,我正在尝试使用python编写的管道来完成此任务. 在使用针对python的virtualenv环境执行本地云功能时,我能够成功完成此操作.这是在打包成拉链之前. exports.foo = function(event,callback) {var s
This article解释了如何通过云函数执行用java编写的管道.但是,我正在尝试使用python编写的管道来完成此任务.

在使用针对python的virtualenv环境执行本地云功能时,我能够成功完成此操作.这是在打包成拉链之前.

exports.foo = function(event,callback) {
var spawn = require('child_process').spawn;
var child = spawn(
    'ENV/bin/python',["pipeline.py","--project $PROEJCT_ID","--temp_location gs://$BUCKET/temp","--staging_location gs://$BUCKET/staging","--runner DataflowRunner"],{cwd: __dirname}
);
child.stdout.on('data',(data) => {
    console.log(`stdout: ${data}`);
});
child.stderr.on('data',(data) => {
    console.log(`stderr: ${data}`);
});
child.on('close',(code) => {
    console.log(`child process exited with code ${code}`);
    callback();
});

};

但是,当我将函数实际部署到GCP并从那里运行时,管道永远不会执行.

任何有关这方面的见解将不胜感激.

以下是运行已部署功能时的日志:

D      foo   vxvt93uc415v    2017-03-05 00:56:43.639  Function execution started
D      foo   vxvt93uc415v    2017-03-05 00:56:57.945  Function execution took 14308 ms,finished with status: 'ok'

更新:

有一个错误,我没有正确注销:

ENV/bin/python is not a supported ELF or interpreter script

我已经联系了Cloud Functions团队,然后他们提交了一份错误报告.

解决方法

我在为MacOS编译的二进制文件中遇到了同样的问题.云功能容器使用Debian,而linux和MacOS可执行文件不兼容(参见 https://stackoverflow.com/a/9439548).

我安装了Cloud functions docker container,并在容器中下载并编译了我需要的二进制文件,然后将其复制出容器并使用云功能进行部署.但是你可以在你的情况下使用预编译的Debian兼容的python解释器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读