二开的云函数设置定时任务,要特别注意云函数类型,不同的云函数类型对应不同的任务组件。
1、云函数类型为其他,设置方式有两种:
1)任务组件:apps.task.task_background.execute_open_api_task
组件参数: {"api_name": "dynamic.script.for.common.api",
"api_param": {"plugin": "云函数名", "param": {"参数名": "参数值"}}}
2)任务组件:core.extend.dynamic_plugin.services_task.dynamic_plugin_task
组件参数: { "plugin": "云函数名", "param": {"参数名": "参数值"},"company_id":xxx}
2、云函数类型为动态OpenApi,设置方式只有一种:
任务组件:apps.task.task_background.execute_open_api_task
组件参数: {"api_name": "private.云函数名","api_param": {"参数名": "参数值"}}
↑↑↑以上只针对二开的云函数组件设置说明,其他定时任务设置及详细说明请继续往下看↓↓↓
定义:
建立系统定时任务定时执行特定方法。
一般有定时更新一些数据,工作预警的定时推送,考勤数据的定时计算等。
比较常用的就是云函数实现某些数据的逻辑计算或数据同步等,下面就介绍下如何建立一个定时任务执行一个云函数方法:
建立:
系统路径:【系统设置】-【基础服务】-【定时任务管理】
【任务分组】:可根据任务分类建立任务分组
新增定时任务:
execute_open_api_task组件:
任务名称:自定义
任务组件:apps.task.task_background.execute_open_api_task
组件参:
api_name: 接口名称
api_param:接口参数
示例:
使用open_api 方式执行动态OpenAPI云函数示例(注:云函数一定是要动态OpenAPI 类型才可以):
{"api_name":"private.xxxxx" # xxxxx表示云函数名,该类云函数可以当作接口使用,对应的接口名就是private.xxxxx
"api_param": {"param":{"xx":"xxx",......}} # param 里边存放云函数需要的参数
}
执行其他云函数可以使用dynamic.script.for.common.api:
案例:
{
"api_name":"dynamic.script.for.common.api",
"api_param":{
"plugin":"xxxx", # 云函数名
"param":{"xxx":"xxxx} # 云函数所需参数
}
}
【任务名称】:就是任务名称
【任务组件】:平台开发写的组件方法,分不同的组件;
执行云函数用的是:core.extend.dynamic_plugin.services_task.dynamic_plugin_task( 如果云函数是动态OpenAPI,推荐使用上方的open_api方式执行云函数或者接口)
其他的预警或者考勤计算是另外的组件可找开发。。。
【组件参数】:输入公司ID和云函数名称,若云函数写的计算方法中需传特殊参数的,就还要加上{“param”:{”参数名”:”传参”}
示例:
{"company_id":130,"plugin":"ChangeToBeginDate"}
{"company_id":130,"param":{"state":"inside"},"plugin":"update_field4"}
【执行队列】:填syn
【任务描述】:与任务名称一致即可
【执行计划-时间间隔】:定义任务每隔多久自动执行一次
比如:只填小时(分钟/秒)1则每隔一小时(分钟/秒)就执行一次,分钟30小时1则每隔一个半小时就执行一次。
【执行计划-Crontab】:定义任务固定哪个时间自动执行一次
比如:只小时填12则每天12点整执行,小时12分钟30则每天12点半执行,小时12分钟30星期5则每周五12点半执行,小时12分钟30日期15则每个月15号的12点半执行,只填星期或日期则到那天默认零点执行。
注意:最后运行时间是比实际时间早8小时的
示例
使用实例
实例1:每一分钟执行(只是事例,当前定时任务设定最小执行时间间隔是20分钟,新建或修改定时任务周期执行时间小于20分钟的将不被允许修改)
实例2:每2小时10执行【注意】周期性无法做到1小时0分钟执行所以必须设置1小时1分钟的设置,分钟字段必须大于0
实例3:每晚的21:30执行
实例4:每周六的23 : 00 执行
实例5:每月22日的4 : 45执行
实例6:每小时的第3和第15分钟执行
1、复制定时任务,生成副本
2、分别配置Crontab
实例7:在8点到11点的第3和第15分钟执行
1、按实例2,复制出7个定时任务副本,此时共有8个相同的定时任务
2、下面是8点的配置,其他的几乎一样
实例8:每周一8点到11点的第3和第15分钟执行
同示例三,设置天/周
实例9:每天18 : 00至23 : 00之间每隔30分钟执行
参考示例6
实例10:晚上11点到早上7点之间,每隔一小时执行
参考示例6
检查
如果定时任务失灵,可以确认下云函数单独执行是否正常
动态api:dynamic.script.for.common.api
执行云函数的”param”最好找写云函数的开发确认
一般计算的数据量比较大,结果超时说明执行成功了正在刷新数据。
如果云函数单独执行没问题,那么基本就是定时任务设置得不对了,尤其注意检查组件参数!
11.定时任务日志清理
定时任务组件:apps.task.task_background.delete_periodic_log_by_task_complete_time_task
参数:{"start":190}
start:清理多少天之前的数据,系统最少保留183天的日志。所以start要大于183
2 评论
张国良 发表:
定时任务开始时间,没有举例说明,顾问看了仍然不明白写法。比如:每天凌晨1点半执行,是否写成:01:30,还是1:30,中文字文符要求,小时数是否必须两位数。这些关键配置点需要写上示例建议考虑补充。
夏星强 发表:
怎么用定时任务配置生日祝福消息预警