Firebase Cloud Functions to run Python script

Viewed 4684

I have an Express application that spawns a Python process to execute a Python script. When I do a firebase serve, I can see that my endpoint is being hit, which then runs the Python process. However, the process doesn't seem to be executing.

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);
            }
        });
    });
}

From the comment in the code above, the listener for stdout 'data' is not being hit. I'm not too familiar with Firebase, but my idea is to use Firebase Hosting for my frontend and then Firebase Cloud Functions to run my Express server. Is there anything that I need to do in order for my application to run the Python script?

From what I've gathered from other StackOverflow posts (here), I can't run a Python process, perhaps because Firebase Cloud Functions does not have Python installed. So instead, I need to package my Python script into an executable (as described here), so that Firebase Cloud Functions can just run the executable. Is this correct? If so, I would prefer not to have to package all of my Python scripts. Is there a better approach to handling this? Is it free?

1 Answers

From what I've gathered from other StackOverflow posts, I can't run a Python process, perhaps because Firebase Cloud Functions does not have Python installed.

This is true.

So instead, I need to package my Python script into an executable (as described here), so that Firebase Cloud Functions can just run the executable. Is this correct?

You can certainly try this, but I don't recommend it. It sounds like a lot of work for little benefit, especially when you have other options.

Is there a better approach to handling this?

You can write Cloud Functions natively in python. You just won't be able to use Firebase tools to test and deploy them. Google Cloud has everything you need to get started.

Related