二开的云函数设置定时任务,要特别注意云函数类型,不同的云函数类型对应不同的任务组件。

    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:接口参数

示例:

{
    "api_name": "warn.message.list",	# 获取预警消息的接口
    "api_param": {						# 接口需要的参数,每个接口需要的参数都不一样,请根据实际情况配置
        "page_index": 1,
        "page_size": 30,
        "filter_dict": {
            "to": 1440462,
            "status": 2
        },
        "extra_property": {
            "sorts": [{
                "type": "desc",
                "key": "update_time"
            }]
        }
    }

}


使用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. 张国良 发表:

    定时任务开始时间,没有举例说明,顾问看了仍然不明白写法。比如:每天凌晨1点半执行,是否写成:01:30,还是1:30,中文字文符要求,小时数是否必须两位数。这些关键配置点需要写上示例建议考虑补充。

  2. 夏星强 发表:

    怎么用定时任务配置生日祝福消息预警