99)
1010
1111var (
12- address = flag .String ("address" , ":50051" , "服务器地址" )
1312 url = flag .String ("url" , "" , "URL" )
1413 freq = flag .Int64 ("freq" , 0 , "抓取频率" )
1514 endPoints = flag .String ("endpoints" , "" , "半角逗号分隔的 etcd 接入点列表,每个接入点地址以 http:// 开始" )
@@ -19,30 +18,30 @@ var (
1918func main () {
2019 flag .Parse ()
2120
22- if * url == "" {
23- log .Fatal ("--url 参数不能为空" )
24- }
25-
21+ // 创建新 ZergClient
2622 zc , err := zerg_client .NewZergClient (* endPoints , * serviceName )
2723 if err != nil {
2824 log .Fatal (err )
2925 }
3026 defer zc .Close ()
3127
32- request := pb.CrawlRequest {Url : * url , Timeout : 10000 , CrawlFrequency : * freq }
33- log .Printf ("开始抓取" )
34- for i := 0 ; i < 10 ; i ++ {
35- // 调用 client.Crawl 前必须先调用 Get 命令获取 client,client 通过 url 的一致性哈希进行分配
36- client , err := zc .Get (* url )
37- if err != nil {
38- log .Fatal (err )
28+ // 调用 client.Crawl 前必须先调用 Get 命令获取 CrawlClient,通过 url 的一致性哈希进行分配
29+ // 不同的 url 要分别调用 Get 得到不同的 CrawlClient
30+ if crawlClient , err := zc .Get (* url ); err == nil {
31+ // RPC 调用
32+ request := pb.CrawlRequest {
33+ Url : * url ,
34+ Timeout : 10000 , // 超时 10 秒
35+ CrawlFrequency : * freq ,
3936 }
40-
41- response , err := client .Crawl (context .Background (), & request )
37+ response , err := crawlClient .Crawl (context .Background (), & request )
4238 if err != nil {
39+ // 处理异常
4340 log .Fatal (err )
4441 }
45- log .Printf ("%+v" , response .Metadata )
46- log .Printf ("%d" , len (response .Content ))
42+
43+ // 处理返回结果
44+ log .Printf ("metadata = %+v" , response .Metadata )
45+ log .Printf ("page content length = %d" , len (response .Content ))
4746 }
4847}
0 commit comments