Где расположены конечные точки очередей облачных задач Google, и кто-то может использовать дочерний процесс nodejs?

У меня есть nodejs на сервере ядра приложений Google, но мне нужно выполнить некоторые фоновые задачи сразу после отправки ответа пользователю. Я использовал пример кода ниже с nodejs child-process как описано здесь, но он работает только при локальном тестировании, но не работает в Google App Engine.

let {fork} = require('child_process');
const forked = fork('./worker.js');

router.post('/endpoint', (req, res) => {
    let options = req.body.options;
    let isResponded = false;
    async_helper.doWork(options).then((s) => {
        let reply = JSON.stringify(s);
        isResponded = true;
       res.status(200).send(reply).end();
       return null
    }).then(value => {
    //This is the long task of sending email
        forked.send(value);
        return null
    }).catch(err => {
    console.log(err);
        if (!isResponded) {
            let errr = err;
            res.status(500).send('Failed').end();
        }
        return null
    });
});

Каков наилучший способ реализации таких задач в производственном приложении? Почему дочерний процесс не работает в App Engine? Должен ли я использовать очереди задач?

Очередь задач: я также пробовал очередь задач после указанной выше проблемы, но я не могу различить конечную точку обработчика очереди задач и конечную точку моего сервера, поскольку этот официальный документ также указывает, что обработчик также прослушивает порт, как мой ранее существовавший app.js точка входа.

Так значит ли это, что то же самое app.js точка входа в очередь задач тоже?

или это означает, что точка входа в очередь задач - это еще один "сервер" в движке приложения?

В течение нескольких часов я не нашел четкого руководства.

1 ответ

Решение

После нескольких проб и ошибок с очередями задач я обнаружил, что это тот же app.js, который является той же конечной точкой, получающей вызовы очереди задач.

Другие вопросы по тегам