最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Firebase Cloud Functions to run Python script - Stack Overflow

programmeradmin2浏览0评论

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 ment 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?

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 ment 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?

Share Improve this question asked Jun 11, 2020 at 14:58 natn2323natn2323 2,0712 gold badges16 silver badges33 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 7

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 remend 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.

发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>