更新/部署时触发Firebase预定功能

时间:2020-01-08 23:18:18

标签: firebase google-cloud-functions google-cloud-scheduler

我使用Firebase计划的云功能有一些意外行为。该功能设置为每天凌晨4点运行,并且可以正常工作。在使用firebase cli deploy部署云功能时,此功能将立即执行。不管是否更改。

我一直在尝试找出何时发生这种情况,因为并不是每次部署都发生这种情况。它似乎仅在每天的第一次部署中发生。如果我再次部署云功能,则在完成部署后,计划的功能将不再执行。

是否有计划的功能在部署后立即运行?如何防止这种情况发生?


编辑:添加了示例代码。 我还做了一些测试。不必要的处决以某种方式与cron计划相关联。

每15分钟将函数更改为.schedule('* / 15 * * * *'),结果如下

13.00-按计划执行功能
13.05-再次部署功能。预定功能再次执行
13.10-再次部署功能。没有执行任何功能
13.15-按计划执行的功能

因此,我要说的是,在计划执行之后进行的第一次部署会使函数再次执行,而后续部署则不会。 在每次部署中,我都更新了console.log,可以看到它是执行的PREVIOUS版本。

我也可以说所有内容都是用打字稿写的
firebase-admin:8.9.0,
firebase-functions:3.3.0
firebase-tools:7.7.0

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

export const scheduledFunction = functions
  .region('europe-west2')
  .runWith({ memory: functions.VALID_MEMORY_OPTIONS[3], timeoutSeconds: functions.MAX_TIMEOUT_SECONDS })
  .pubsub
  .schedule('0 4 * * *') // Every day 04.00
  .timeZone('Europe/Stockholm')
  .retryConfig({ retryCount: 2 })
  .onRun(async (context) => {
    // function code...
});

index.ts

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

// Initialize firebase admin
admin.initializeApp(functions.config().firebase);

import { scheduledFunction } from './scheduledFunction';
export { scheduledFunction };

...import other functions

0 个答案:

没有答案