定时任务触发器用于定时执行一个函数。腾讯云 Timer 触发器目前只支持 cron 格式。

:::info 温馨提醒,测试函数后请及时关闭触发器自动执行,避免超额扣费。 :::

使用方式

f.yml 中配置函数和触发器。

  1. service:
  2. name: midway-faas-examples
  3. provider:
  4. name: tencent
  5. functions:
  6. cronTimerTrigger:
  7. handler: cron.handler
  8. events:
  9. - timer:
  10. type: cron
  11. value: '*/5 * * * *'
  12. payload: 'test'
  13. package:
  14. artifact: code.zip

f deploy 后,即可。

开发支持

针对 Timer 触发器,我们提供了传入的事件类型定义。

  1. import { FaaSContext, FC } from '@midwayjs/faas';
  2. import { Func, Inject, Provide } from '@midwayjs/decorator';
  3. @Provide()
  4. export class TimerTriggerTest {
  5. @Inject()
  6. ctx: FaaSContext; // context
  7. @Func('cron.handler')
  8. async cronHandler(event: SCF.TimerEvent) {
  9. // TODO
  10. }
  11. }

本地开发

使用 f invoke 命令进行触发。

  1. f invoke -f [你的函数名]

本地测试

这里没有传 data,会默认通过 f.yml 获取触发器类型传入模拟数据。

  1. // test
  2. describe('/test/index.test.ts', () => {
  3. it('invoke', async () => {
  4. await invoke({
  5. functionName: 'cronTimerTrigger',
  6. });
  7. });
  8. });