搜狗workflow框架例程分析——02

文章目录

测试结果

任务:实现一次redis写入与读出:redis_cli,在主机(windows 10)运行redis-server,在虚拟机(ubuntu NAT模式)中运行例程02并向主机数据库传送key和val
在这里插入图片描述
首先在本地读取数据库观察只含有一个key:mykey,后运行例程02,在观察数据库中多了一条记录。
由于虚拟机使用NAT模式,所以本次测试可以看做是远程访问。

代码分析

访问redis数据库的操作与例程01抓取http操作有些类似,依旧是分为两个部分,
1、封装redis命令报,
2、获取返回数据并处理。
但是又和例程01中有一些不一样,在第一部分中保存了一些用户数据被用在了callback函数中,并且在callback函数中,如果检测到SET命令,会创建一个新的SET命令报,发送给redis,然后再GET刚才输入的数据并打印出来。
在这里插入图片描述
这段代码中新出现了一种操作

series_of(task)->push_back(next);

在这里next是我们下一个要发起的redis task,执行GET操作。我们并不是执行next->start()来启动任务,而是把next任务push_back到当前任务序列的末尾。

两种方法的区别在于:

  • 用start来启动任务,任务是被立刻启动的,而push_back的方法,next任务是在callback结束之后被启动。
    • 最起码的好处是,push_back方法可以保证log打印不会乱。否则,用next->start()的话,示例中"Finished."这个log可能会被先打印。
  • 用start来启动下一个任务的话,当前任务序列(series)就结束了,next任务会新启动一个新的series。
    • series是可以设置callback的,虽然在示例中没有用到。
    • 在并行任务里,series是并行任务的一个分枝,series结束就会认为分枝结束。

猜你喜欢

转载自blog.csdn.net/qq_44011116/article/details/121790357