我有一个Express应用程序,它生成一个Python进程来执行Python脚本。 当我执行FireBase serve
时,我可以看到我的endpoint被击中,然后它运行Python进程。 然而,该过程似乎没有执行。
const runPythonScript = () => {
return new Promise((resolve, reject) => {
let value;
const spawn = require('child_process').spawn;
const pythonProcess = spawn('python', ['./myScript.py']);
pythonProcess.stdout.on('data', (data: string) => {
console.log('Am I being hit?') // This line is not being hit
value = JSON.parse(data);
});
pythonProcess.on('exit', (code: number) => {
if (code === 0) {
resolve(value);
}
else {
reject(value);
}
});
});
}
从上面代码中的注释来看,stdout'data'的侦听器没有被击中。 我对Firebase不太熟悉,但我的想法是使用Firebase托管作为我的前端,然后使用Firebase云函数来运行我的Express服务器。 为了让我的应用程序运行Python脚本,我需要做什么吗?
根据我从其他StackOverflow文章(这里)收集到的信息,我无法运行Python进程,可能是因为Firebase Cloud Functions没有安装Python。 因此,我需要将我的Python脚本打包到一个可执行文件中(如这里所述),这样Firebase云函数就可以运行这个可执行文件了。 这是正确的吗? 如果是这样,我更希望不必打包我的所有Python脚本。 有没有更好的处理方法? 免费吗?
根据我从其他StackOverflow文章中收集到的信息,我无法运行Python进程,可能是因为Firebase Cloud Functions没有安装Python。
这是真的。
因此,我需要将我的Python脚本打包到一个可执行文件中(如这里所述),这样Firebase云函数就可以运行这个可执行文件了。 这是正确的吗?
你当然可以试试这个,但我不建议你这么做。 这听起来像是很多工作却没有多少好处,尤其是当你有其他选择的时候。
有没有更好的处理方法?
您可以用Python本机编写云函数。 您将无法使用Firebase工具来测试和部署它们。 谷歌云提供了你入门所需的一切。