00:00
好,那么这一节呢,给大家讲一下我们上一个示例,呃,他这个定时任务的原理,现在呢,其实时间已经过去一阵了,我们还可以再刷新一下这个web UI。呃,那么可以看到呢,这里面有了越来越多的这个执行记录,然后呢,我们的呃,控制台里面也有越来越多的摘数据。呃,好,那么接下来呢,我们来讲一下这个啊,我们的脚本呢,是怎么经过web UI的处理,变成了我们的定时任务的。我们可以先看到这个data explorer里面。呃,在这个word文档里面呢,我留了一份之前写的这个flax脚本。呃,把它拿过来。是从这里开始。好,我们回到这个data explorer里面。呃,回到这个script editor。直接把这个脚本粘上,再去执行一下。好,那么现在呢,我们知道这个呢,是我们刚才写的脚本一模一样的。
01:03
那么这里面啊,有个问题就是你可以看到呢,我现在先把它截个图。然后我们说之前在text里面呢,你可以直接去编辑这个任务,我们点下它,你看你看一下有什么区别。好啊,你可以看到啊,这里面其实呃,多了一些东西,大家有没有看到。有一个option task等于什么什么啊,Name是a 30秒,哎,下划线,First,这不是我们设置的那个任务名称吗?然后这个A30秒是不是我们设置的那个调度间隔调度时间,然后最后呢,Two bucket01org硅谷啊这个是不是我们设置的,呃,In Fla DB回写到哪一个数据库呢。啊,也可以看到,就是呃,这些option在我们的import from之间,说白了就是我们在data explorer里面呢,去点击那个save as的时候,其实我们的web UI修改了我们的脚本。
02:02
好,我们之前呢,说过这个option,那么option的作用呢,我们当时说是根据这个上下文呢,它可以控制一下程序的,呃,这个程序的行为,但是呢,我们当时没有仔细介绍这个东西,现在呢,你看到他的真容了,呃,那么通过option task呢,我们可以直接将我们的整个脚本作为一个定时调度的啊,定时调度的任务,那么这一块呢,这个定时调度多长时间调度一次啊,包括这个定时调度任务的名字,都是通过option这种这种类型的变量来进行操控的。呃,那么接下来呢,我去打开Vs code。哎呀,我开个Vs code的。呃,随便新建个文件吧。呃,先把这个脚本呢,给它复制下来,哎,把这一套都全部留住。看的Vs code去哪了?把它直接粘进来。
03:02
呃,那么现在呢,我们去把这个任务删掉啊,把这个任务删掉,我们看用这个写好的,用它这个自动生成的脚本。能不能直接把这个任务创建出来。点卡。然后在外面呢,就回到这个task页面上。点击右边的这个垃圾桶,把它删掉,Confirm。好,那么现在呢,我们的这个定时任务呢,就中断了啊,为了方便待会给大家演示呢。我在这边把屏清一下,CTRLL把屏清一下。啊,先CTRLC吧,把这个程序断掉。然后呢,我们可以看到这个地方还是跑一遍simple http post server。接下来呢,把平清一下啊,再跑这个程序啊。好,呃,现在呢,我们把这个脚本拿到手。Ctrl a全选,然后复制。我再回到data explorer里面。
04:00
我创建一个打开这个script script editor。然后全部全部清空。把脚本粘进来,好点击。啊也可以看到呢,这里说option v啊是没有被注册的,说这个东西呢,它没有被注册,把它删掉看一下。呃,程序呢,是跑通了。我们可以看到这里面呢。呃,报出来一个Jason数据,说明这个数据呢,也成功发送到我的,呃服务端了,现在我们看一下这个定时任务的情况,有没有被创建。好,我们点一下这个task。哎,可以看到呢,这里没有数据啊,这里没有出现这个我们的定时任务,也就是说我在data explorer里面呢,虽然说写了一个the option task的这个脚,呃,脚本啊,加了一个这样的配置项,但是呢,我们的配置仍然没有生效,这是为什么呢?呃,主要是因为我们的萨呢,还记得我们一发TB呢,向外暴露的是htt papi接口,呃,所有的功能呢,都要依赖于这个API来完成,那么我们的sum me呢,对应的接口呢,其实是query。
05:13
啊,他对query。那么我们刚才呢,点击CS。对应的什么接口呢?点击CS里面,然后task去创建任务,对应的什么接口呢?那当然是跟task相关的接口。呃,所以说呢,这个option,这个option它能否生效,其实呃依赖于这个接口的上下文,我当前呢,如果是调的是task接口,那么这个option才会生效,如果呢,我调的是query接口,那么这个option就不生效。呃所以说option呢,你觉得它可能是脚本语言里面一部分,它其实啊,这个行为呢,有点像我们SQL里面的那个,呃,Set去set这个绘画里面的某个变量,是这样一种使用的方式,呃所以说这里面只是只说明了一个变量呢,但是在不同的API的上下文里面,呃,它能够起到不同的作用,有时候有效,有时候无效,所以说你要分清楚这个option对应的变量,它什么时候有效,什么时候无效。
06:12
好,那么说到这里呢,我们要沿着这个,沿着这个思路啊。我们复制出来的这个脚本应该可以在task里面,Task的API里面生效。所以此处呢,我们就把它直接拿到这个虚拟机上,我们去编辑一个纯文本文件,然后呢,用这个in Fla命令行工具,看看能不能创建一个定时任务。好,现在呢,我们回到自己的这个终端,我们还是在这个OPT modu旗下,那跟这个命令行工具相关的文件和资源呢,我们都放在这个的目录下。这里呢,我们创建一个就叫task吧。TXT文件。
07:00
好把我们的脚本呢,直接粘进来。复制,然后一粘。哎,没有粘上啊,稍等我这个地方。剪贴板出点问题。好,那么这个脚本呢,就粘进来了啊,接下来呢,我们保存退出。呃,接下来呢,使用inlux命令行,我们去看一下如何去创建一个任务。我们可以先看一下help,看有没有跟task相关的这个子命令。哎,可以看到呢,有个task,然后我们在这里敲inlux task。啊,这里面又说呢,有一个create啊,所以说这里可以创建一个呃,我们的定时任务,再看一下这个帮助命令啊,这里面呢,就说了,你需要你可以指定什么东西啊,比如说这个host啊,你要的这个主机啊什么的,那么这个不用管啊,因为这些呢,我们之前在那个呃,初始化的那个配置文件里面,就是连接哪一个host,包括当时我使用的呃,使用talking我们都指定过,我们只看下面这个。
08:18
这里面要指定我们的,呃,组织名称。呃,还有就是我们的任务名,然后还有这个AI可以看到这是,诶多长时间跑一次,然后我们的这个脚本的文件都在这里。那么我们接下来呢,就尝试来跑一下这个命令。Inlux啊,点杠inlux,然后是task create。呃,Org at,硅谷name就叫,呃,随便叫一个吧,比如叫TEST123。然后file指定我们当前的task这个文件啊,那么现在看起来呢,好像没什么问题了,我们回车看一下。
09:06
好,这里呢可以看到啊,我们现在呢有一个ID,那么看到ID说明这个任务呢,已经挂上了,接下来我们去啊,咱的这个脚本里面呢,呃,去这个web UI上看一下。点开texts,好,你可以看到这个任务名称呢,还是叫A瑞30那杠first,呃,但是我刚在命令行里面指定的是什么呀,同学们指定的是不是TEST123,哎,说明我们在脚本里面设置的这个任务名称。我们在脚本里面设置的任务名称比在外面命令行里面设置的任务名称,诶是不是优先级要高呀,哎,就这个样子,那么另外呢,你会发现我这个命令行里面呢,虽然可以传入一个A瑞的参数,但是我这里传了吗?我这里没有传啊,那么这个任务里面是怎么显示的呢?啊,你可以看到这个每30秒的调度一次,说明我们脚本里面的这个配置生效了。
10:01
是不是啊,说明我们脚本里面的配置生效了,也就是说这个option其实啊,这就是他的上下文结合上下文的,它才有起作用的这个效果。呃,现在呢,我们还来看一下这个,呃,我们的终端看我们的服务是不是多了很多Jason啊,可以看到现在这个任务呢,也是在正常的运作,呃,那么接下来呢,还有一个问题。呃,就是刚才呢,我们在web UI上去生成任务的时候,他要求我们必须选择一个什么呀。啊,是不是必须选择把这个数据回写到哪个存储桶呢?啊,如果说我现在这个情况,我就压根就用不着回血啊,你这个web UI在创建任务的时候,给我强行加上一个tool的函数是否就不合适呢?呃,所以说如果我们不用web UI去指定任务,我们用这个flux命令行的方式,那么我们就能跳过web UI来修改我们的代码啊,接下来呢,我还是先把这个任务删掉。把这个任务删掉。
11:00
好,那么接下来呢,我们可以去。回到命令行。好,去修改一下刚才的这个脚本文件task,把这个图呢给它删掉,不要它了。好,保存退出。接下来呢,我们再去创建一下这个任务,这次呢,我们就不指定名称了,因为里面已经写名称了。好,可以看到呢,我们这个任务还是创建成功了,接下来呢,我们回到task里面刷新一下。哎,现在呢,我们点进去。看一下edit task。你看一下,这现在里面还有to吗?诶,是不是就没有了呀,所以说我们通过这个命令行呢,其实可以,呃,相对来说呢,更灵活,没有那么web UI呢,他自作主张帮我们加一些画蛇添足的东西啊,所以说这就是我们整个呃定时任务的一个原理,它其实呢,还是仰仗于我们的flax脚本来完成。
我来说两句