提问者:小点点

运行Python脚本的Firebase云函数


我有一个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脚本。 有没有更好的处理方法? 免费吗?


共1个答案

匿名用户

根据我从其他StackOverflow文章中收集到的信息,我无法运行Python进程,可能是因为Firebase Cloud Functions没有安装Python。

这是真的。

因此,我需要将我的Python脚本打包到一个可执行文件中(如这里所述),这样Firebase云函数就可以运行这个可执行文件了。 这是正确的吗?

你当然可以试试这个,但我不建议你这么做。 这听起来像是很多工作却没有多少好处,尤其是当你有其他选择的时候。

有没有更好的处理方法?

您可以用Python本机编写云函数。 您将无法使用Firebase工具来测试和部署它们。 谷歌云提供了你入门所需的一切。