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

如何通过云函数调度用Python编写的数据流管道?,python,node.js,google-cloud-platform,google-cloud-dataflow,google-cloud-functions,Python,Node.js,Google Cloud Platform,Google Cloud Dataflow,Google Cloud Functions,解释如何通过云函数执行用java编写的管道。然而,我正试图通过用python编写的管道来实现这一点 在使用VirtualEnvironment for python执行本地云函数时,我能够成功地做到这一点。这是在包装成拉链之前 exports.foo = function(event, callback) { var spawn = require('child_process').spawn; var child = spawn( 'ENV/bin/python', ["pip

解释如何通过云函数执行用java编写的管道。然而,我正试图通过用python编写的管道来实现这一点

在使用VirtualEnvironment for python执行本地云函数时,我能够成功地做到这一点。这是在包装成拉链之前

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

我已经联系了云功能团队,他们随后提交了一份错误报告。

我对为MacOS编译的二进制文件也有同样的问题。云函数容器使用Debian,linux和MacOS可执行文件不兼容(请参阅)


我安装了,下载并编译了容器中所需的二进制文件,然后将其从容器中复制出来,并使用云函数进行部署。但是,在您的情况下,只需使用预编译的与Debian兼容的python解释器就可以了。

其中一个问题是python不采用
--a=b
形式的参数;而是以
--ab
的形式,没有等号。此外,该参数是
--staging\u location
,而不是
--staging\u location
。也许这会有帮助?巴勃罗,谢谢你指出这些事情!但是,即使进行了这些调整,问题仍然存在。你解决了你的问题吗?你能够触发它吗?如果是,你能更新答案吗?