如何通过云函数调度用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解释器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |