[英]Firebase pubsub function schedule invalid schedule or timezone
[英]Error Using Firebase Emulators PubSub for Timed Function
我有一个定时云函数,我想在 Firebase 模拟器中测试它。 为此,我使用了此处描述的解决方案( 如何使用 pubsub 模拟器在本地调用 firebase 调度函数),该解决方案使用 Pub/Sub 消息触发调度函数。
此解决方案成功触发了该功能,但它似乎重复调用的次数比预期的要多。 例如,当我运行下面的代码时,它应该每分钟调用一次计划函数:但是,它在一分钟后运行一次代码,然后在 2 分钟后运行两次(所以它总共运行了 3 次),然后在运行了 3 次3 次(所以它总共运行了 6 次),并继续增加从那里的调用,这表明 setInterval() 被调用了不止一次(我的 Firebase index.js 文件中有 setInterval() )。 有没有什么办法解决这一问题? 非常感谢。
const pubsub = new PubSub({
apiEndpoint: 'localhost:8085'
});
setInterval(() => {
const SCHEDULED_FUNCTION_TOPIC = 'firebase-schedule-yourFunctionName';
console.log(`Trigger sheduled function via PubSub topic: ${SCHEDULED_FUNCTION_TOPIC}`);
const msg = await pubsub.topic(SCHEDULED_FUNCTION_TOPIC).publishJSON({
foo: 'bar',
}, { attr1: 'value1' });
}, 1 * 60 * 1000); // every 1 minute
我复制了你的情况,但我这边没有问题。 这是我的完整源代码:
索引.js :
const admin = require("firebase-admin");
const functions = require("firebase-functions");
const { PubSub } = require("@google-cloud/pubsub");
const pubsub = new PubSub();
admin.initializeApp();
const date_ob = new Date();
exports.pubsubScheduled = functions.pubsub.schedule("every mon 07:00").onRun((context) => {
console.log("========== PUBSUB FUNCTION ==========");
console.log("Time", new Date());
return true;
});
触发器.js :
const admin = require("firebase-admin");
const functions = require("firebase-functions");
const { PubSub } = require("@google-cloud/pubsub");
admin.initializeApp();
var date_ob = new Date();
const pubsub = new PubSub({
apiEndpoint: 'localhost:8085' // Change it to your PubSub emulator address and port
});
setInterval(() => {
const SCHEDULED_FUNCTION_TOPIC = 'firebase-schedule-pubsubScheduled';
console.log(`Trigger sheduled function via PubSub topic: ${SCHEDULED_FUNCTION_TOPIC} at ${new Date()}`);
const msg = pubsub.topic(SCHEDULED_FUNCTION_TOPIC).publishJSON({
foo: 'bar',
}, { attr1: 'value1' });
}, 1 * 60 * 1000); // every 1 minute
运行模拟器后触发代码( trigger.js
)没有问题,一切正常,没有出现多输出。 您可以编辑您的问题并添加更多详细信息,我们将如何重现您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.