Могут ли задания cron в google app engine запускать фоновую облачную функцию?

После прочтения документов: https://cloud.google.com/appengine/docs/standard/nodejs/scheduling-jobs-with-cron-yaml

Кажется, что cron jobs только поддержка HTTP облачная функция.

Я хочу использовать GAEcron jobs а также google pubsub чтобы активировать мою функцию фонового облака каждый час. Подобно:

GAE corn jobs => Cloud pub/sub => фон cloud function,

Это возможно?

3 ответа

Решение

Вы не можете напрямую вызывать облачные функции из задания Cron, поскольку это служба App Engine, но вы можете вызвать обработчик App Engine из своего задания Cron и заставить этот обработчик вызывать вашу облачную функцию, используя любую информацию, которую вы хотите использовать из Pub/Sub.

Здесь есть пример, который я и сказал. Вы можете заменить его на использование Node.js в App Engine вместо Python:

const express = require('express');

const app = express();

app.get('/', (req, res) => {
  const request = require('request');

  request('YOUR_FUNCTION_URL', { json: false }, (err, res, body) => {
  if (err) { return console.log(err); }
  res.status(200).send('Trigger called').end();
});


});

// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});

РЕДАКТИРОВАТЬ:

Cloud Scheduler - это новая служба (на данный момент в бета-версии), которая может создавать задания cron, предназначенные для App Engine, Pub/Sub или URL. В вашем случае вы можете настроить одно задание по URL-адресу вашей функции, как указано здесь. Это намного проще.

Сервис Cron не интегрирован с облачными функциями. Это часть движка приложения.

Это возможно и подробно описано здесь.

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