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

测试说明

本次例程在ubuntu上运行,redis服务器安装在本机的windows系统下,运行例程00作为访问对象。

测试结果

没有运行例程03之前在redis的数据库
在这里插入图片描述
运行例程03之后
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到数据库中已经增加了关于本地端口8888的记录。

代码分析

在例程中,主要关注三个callback函数(series_callback, http_callback, redis_callback)和一个lamda函数

main函数

在这里插入图片描述
前面就是正常的对http协议报和redis数据报封装

在这里插入图片描述
后面创建了一个series函数,并开始任务。
之前两组示例中,我们直接调用task->start()启动第一个任务。task->start()操作实际的工作方法是,
先创建一个以task为首任务的SeriesWork,再启动这个series。我们想给series设置一个callback,并加入一些上下文。所以我们不使用任务的start接口,而是自己创建一个series。并通过lamda函数制造了series的回调函数
这里将http_task任务设为首任务,成功获取http数据报后调用http回调函数解析,然后继续调用redis回调函数将http数据写入数据库中。
分析一下lamda函数
什么是lamda函数https://www.cnblogs.com/jimodetiantang/p/9016826.html

在程序中,捕获子句设置为wait_group,借助计时功能,通过done()结束整个程序。

http_callback函数

在这里插入图片描述

在已经成功拿到http数据报的前提下,将数据存入body中,然后创建redis任务并将任务添加到series任务序列末尾,将网页数据和长度传入,并保存到redis数据库中。

猜你喜欢

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