Могут ли задания cron в google app engine запускать фоновую облачную функцию?
После прочтения документов: https://cloud.google.com/appengine/docs/standard/nodejs/scheduling-jobs-with-cron-yaml
Кажется, что cron jobs
только поддержка HTTP
облачная функция.
Я хочу использовать GAE
cron 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 не интегрирован с облачными функциями. Это часть движка приложения.