Google app engine 如何为具有相同处理程序的多个cron作业设置cron.yaml?
这是我的Google app engine 如何为具有相同处理程序的多个cron作业设置cron.yaml?,google-app-engine,Google App Engine,这是我的cron.yaml: cron: - description: 'cron trigger create email' url: /cron/events/createEmail schedule: every 1 hours target: cron-jobs-background-cloud-function - description: 'cron trigger create user' url: /cron/events/createUs
cron.yaml
:
cron:
- description: 'cron trigger create email'
url: /cron/events/createEmail
schedule: every 1 hours
target: cron-jobs-background-cloud-function
- description: 'cron trigger create user'
url: /cron/events/createUser
schedule: every 1 hours
target: cron-jobs-background-cloud-function
cron:
- description: 'cron-jobs-background-cloud-function'
url: /cron/events/*
schedule: every 1 hours
target: cron-jobs-background-cloud-function
server.js
:
function taskHandler() {}
app.get('/cron/events/createEmail', (req, res) => {
const topicName = req.path.split('/').slice(-1)[0];
console.log('topicName: ', topicName);
taskHandler(topicName);
res.sendStatus(200);
});
app.get('/cron/events/createUser', (req, res) => {
const topicName = req.path.split('/').slice(-1)[0];
console.log('topicName: ', topicName);
taskHandler(topicName);
res.sendStatus(200);
});
app.get('/cron/events/*', (req, res) => {
const topicName = req.path.split('/').slice(-1)[0];
console.log('topicName: ', topicName);
taskHandler(topicName);
res.sendStatus(200);
});
cron.yaml
和server.js
都是重复的
cron服务是否支持如下路径模式:
cron:
- description: 'cron trigger create email'
url: /cron/events/createEmail
schedule: every 1 hours
target: cron-jobs-background-cloud-function
- description: 'cron trigger create user'
url: /cron/events/createUser
schedule: every 1 hours
target: cron-jobs-background-cloud-function
handlers:
- url: /cron/events/*
script: [PATH TO APP]
cron.yaml
:
cron:
- description: 'cron trigger create email'
url: /cron/events/createEmail
schedule: every 1 hours
target: cron-jobs-background-cloud-function
- description: 'cron trigger create user'
url: /cron/events/createUser
schedule: every 1 hours
target: cron-jobs-background-cloud-function
cron:
- description: 'cron-jobs-background-cloud-function'
url: /cron/events/*
schedule: every 1 hours
target: cron-jobs-background-cloud-function
server.js
:
function taskHandler() {}
app.get('/cron/events/createEmail', (req, res) => {
const topicName = req.path.split('/').slice(-1)[0];
console.log('topicName: ', topicName);
taskHandler(topicName);
res.sendStatus(200);
});
app.get('/cron/events/createUser', (req, res) => {
const topicName = req.path.split('/').slice(-1)[0];
console.log('topicName: ', topicName);
taskHandler(topicName);
res.sendStatus(200);
});
app.get('/cron/events/*', (req, res) => {
const topicName = req.path.split('/').slice(-1)[0];
console.log('topicName: ', topicName);
taskHandler(topicName);
res.sendStatus(200);
});
我怀疑您不能在cron.yaml
中使用通配符,但您可以在app.yaml
中使用通配符,这应该可以实现您想要做的
保持您的cron.yaml
如下:
cron:
- description: 'cron trigger create email'
url: /cron/events/createEmail
schedule: every 1 hours
target: cron-jobs-background-cloud-function
- description: 'cron trigger create user'
url: /cron/events/createUser
schedule: every 1 hours
target: cron-jobs-background-cloud-function
handlers:
- url: /cron/events/*
script: [PATH TO APP]
按如下方式设置你的app.yaml
:
cron:
- description: 'cron trigger create email'
url: /cron/events/createEmail
schedule: every 1 hours
target: cron-jobs-background-cloud-function
- description: 'cron trigger create user'
url: /cron/events/createUser
schedule: every 1 hours
target: cron-jobs-background-cloud-function
handlers:
- url: /cron/events/*
script: [PATH TO APP]
然后,您可以像在您的问题中一样,对所有cron作业使用one处理程序。在阅读了以下文档之后:,文档说script
的值是auto
?@novaline,我不使用Python,也不使用nodejs,所以我无法回答这个问题。您应该能够保留app.yaml中当前的任何内容。