婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > golang并發(fā)下載多個(gè)文件的方法

golang并發(fā)下載多個(gè)文件的方法

熱門標(biāo)簽:南通如皋申請開通400電話 高德地圖標(biāo)注口訣 廣州呼叫中心外呼系統(tǒng) 中國地圖標(biāo)注省會(huì)高清 西部云谷一期地圖標(biāo)注 浙江高速公路地圖標(biāo)注 學(xué)海導(dǎo)航地圖標(biāo)注 江西轉(zhuǎn)化率高的羿智云外呼系統(tǒng) 地圖標(biāo)注的汽車標(biāo)

背景說明

假設(shè)有一個(gè)分布式文件系統(tǒng),現(xiàn)需要從該系統(tǒng)中并發(fā)下載一部分文件到本地機(jī)器。

已知該文件系統(tǒng)的部分節(jié)點(diǎn)ip, 以及需要下載的文件fileID列表,并能通過這些信息來拼接下載地址。

其中節(jié)點(diǎn)ip列表保存在xx_node.txt, 要下載的fileID保存在xx_fileID.txt中。

代碼示例

package main

import (
  "bufio"
  "flag"
  "fmt"
  "io"
  "math/rand"
  "net/http"
  "os"
  "time"
)

var (
  clustername = flag.String("clustername", "c1", "download clustername")
)

// 逐行讀取文件內(nèi)容
func ReadLines(fpath string) []string {
  fd, err := os.Open(fpath)
  if err != nil {
    panic(err)
  }
  defer fd.Close()

  var lines []string
  scanner := bufio.NewScanner(fd)
  for scanner.Scan() {
    lines = append(lines, scanner.Text())
  }
  if err := scanner.Err(); err != nil {
    fmt.Fprintln(os.Stderr, err)
  }

  return lines
}

// 實(shí)現(xiàn)單個(gè)文件的下載
func Download(clustername string, node string, fileID string) string {
  nt := time.Now().Format("2006-01-02 15:04:05")
  fmt.Printf("[%s]To download %s\n", nt, fileID)

  url := fmt.Sprintf("http://%s/file/%s", node, fileID)
  fpath := fmt.Sprintf("/yourpath/download/%s_%s", clustername, fileID)
  newFile, err := os.Create(fpath)
  if err != nil {
    fmt.Println(err.Error())
    return "process failed for " + fileID
  }
  defer newFile.Close()

  client := http.Client{Timeout: 900 * time.Second}
  resp, err := client.Get(url)
  defer resp.Body.Close()

  _, err = io.Copy(newFile, resp.Body)
  if err != nil {
    fmt.Println(err.Error())
  }
  return fileID
}

func main() {
  flag.Parse()

  // 從文件中讀取節(jié)點(diǎn)ip列表
  nodelist := ReadLines(fmt.Sprintf("%s_node.txt", *clustername))
  if len(nodelist) == 0 {
    return
  }

  // 從文件中讀取待下載的文件ID列表
  fileIDlist := ReadLines(fmt.Sprintf("%s_fileID.txt", *clustername))
  if len(fileIDlist) == 0 {
    return
  }

  ch := make(chan string)

  // 每個(gè)goroutine處理一個(gè)文件的下載
  r := rand.New(rand.NewSource(time.Now().UnixNano()))
  for _, fileID := range fileIDlist {
    node := nodelist[r.Intn(len(nodelist))]
    go func(node, fileID string) {
      ch - Download(*clustername, node, fileID)
    }(node, fileID)
  }

  // 等待每個(gè)文件下載的完成,并檢查超時(shí)
  timeout := time.After(900 * time.Second)
  for idx := 0; idx  len(fileIDlist); idx++ {
    select {
    case res := -ch:
      nt := time.Now().Format("2006-01-02 15:04:05")
      fmt.Printf("[%s]Finish download %s\n", nt, res)
    case -timeout:
      fmt.Println("Timeout...")
      break
    }
  }
}

小結(jié)

下載時(shí)沒有用到默認(rèn)的http Client, 并指定了超時(shí)時(shí)間;

下載文件時(shí)調(diào)用了系統(tǒng)調(diào)用, goroutine會(huì)被掛起;

下載文件完成后會(huì)喚醒被掛起的goroutine, 該goroutine執(zhí)行完后面的代碼后便退出;

全局超時(shí)控制,超時(shí)后主線程退出。

以上這篇golang并發(fā)下載多個(gè)文件的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • golang語言實(shí)現(xiàn)的文件上傳與文件下載功能示例
  • Golang實(shí)現(xiàn)異步上傳文件支持進(jìn)度條查詢的方法
  • Golang+Android基于HttpURLConnection實(shí)現(xiàn)的文件上傳功能示例
  • golang簡單獲取上傳文件大小的實(shí)現(xiàn)代碼
  • 如何使用大學(xué)教育郵箱下載golang等軟件(推薦)
  • 解決 Golang VS Code 插件下載安裝失敗的問題
  • golang實(shí)現(xiàn)http server提供文件下載功能
  • Golang 使用http Client下載文件的實(shí)現(xiàn)方法
  • 下載golang.org/x包的操作方法
  • golang實(shí)現(xiàn)的文件上傳下載小工具

標(biāo)簽:貴州 曲靖 吐魯番 許昌 保定 東營 德宏 常州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang并發(fā)下載多個(gè)文件的方法》,本文關(guān)鍵詞  golang,并發(fā),下載,多個(gè),文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang并發(fā)下載多個(gè)文件的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang并發(fā)下載多個(gè)文件的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲激情自拍视频| 欧美午夜精品久久久久久超碰| 欧美一级二级三级蜜桃| 欧美综合一区二区| 色综合久久88色综合天天| 99久久er热在这里只有精品66| 久久精品理论片| 蜜乳av一区二区三区| 青椒成人免费视频| 人人狠狠综合久久亚洲| 免费观看久久久4p| 国产成a人无v码亚洲福利| 国产精品亚洲а∨天堂免在线| 高清beeg欧美| 欧洲国内综合视频| 91精品黄色片免费大全| 国产目拍亚洲精品99久久精品| 国产日韩影视精品| 一区二区三区免费| 国精产品一区一区三区mba视频 | 国产一区二区成人久久免费影院 | 欧美一区二区大片| 日本一区二区三区久久久久久久久不| 最新国产の精品合集bt伙计| 国产精品久久久久久久岛一牛影视 | 欧美一级久久久| 国产精品短视频| 老汉av免费一区二区三区| 欧美一区二区三区婷婷月色| 成人黄色国产精品网站大全在线免费观看| 国产成人亚洲综合a∨婷婷| 色综合咪咪久久| 久久久久久久网| 麻豆精品一区二区综合av| 色婷婷综合久色| 亚洲欧美日韩小说| 成人午夜碰碰视频| 中文无字幕一区二区三区| 久久国内精品视频| 精品国产免费久久| 蜜臀av性久久久久蜜臀av麻豆| 欧美在线观看视频一区二区三区 | 久久成人免费日本黄色| 欧美在线观看一二区| 亚洲天堂久久久久久久| 国产成人免费在线视频| 久久婷婷成人综合色| 国产成人综合网站| 国产精品免费aⅴ片在线观看| 国产aⅴ综合色| 一区二区三区加勒比av| 91免费在线视频观看| 亚洲成人一区在线| 精品国产91乱码一区二区三区 | 国产精品一区一区| 1024国产精品| 欧美在线一区二区| 香港成人在线视频| 日本一区二区电影| 欧美视频一区二区在线观看| 久久精品国产一区二区三区免费看| 精品999在线播放| 99re这里都是精品| 激情文学综合插| 亚洲第一精品在线| 国产精品丝袜久久久久久app| 欧美日韩一区成人| 91在线观看成人| 免费观看成人av| 亚洲一区日韩精品中文字幕| 国产午夜久久久久| 精品国产一区二区三区不卡| 在线观看亚洲a| 99久久精品99国产精品| 国产精品99久久久久久久vr| 九九热在线视频观看这里只有精品| 一区二区三区产品免费精品久久75| 久久亚洲一区二区三区四区| 91精品婷婷国产综合久久性色| 久久久精品影视| 欧美电影免费观看高清完整版在线 | 在线亚洲一区二区| 91亚洲精品一区二区乱码| 国产a级毛片一区| 国产九色sp调教91| 成人深夜在线观看| 99综合电影在线视频| 色诱亚洲精品久久久久久| 在线视频综合导航| 在线免费不卡电影| 欧美日韩你懂的| 精品久久久久一区| 久久婷婷色综合| 自拍偷拍国产亚洲| 亚洲成人黄色影院| 国产盗摄一区二区三区| 99久久精品国产麻豆演员表| 欧美人伦禁忌dvd放荡欲情| 日韩欧美国产精品一区| 国产精品美日韩| 日本vs亚洲vs韩国一区三区二区 | 欧美综合一区二区| 久久久综合激的五月天| 一区二区久久久久久| 韩国精品主播一区二区在线观看| 成人黄色国产精品网站大全在线免费观看 | 日韩美女啊v在线免费观看| 石原莉奈在线亚洲二区| 国产精品影视网| 这里只有精品免费| 亚洲人吸女人奶水| 国产伦精品一区二区三区在线观看| 91社区在线播放| 久久久久亚洲综合| 极品美女销魂一区二区三区| 欧美日韩精品系列| 亚洲精品乱码久久久久久日本蜜臀| 精品一区二区三区免费播放| 69堂精品视频| 久久99精品国产麻豆婷婷洗澡| 欧美网站一区二区| 亚洲综合色网站| 在线免费不卡视频| 伊人婷婷欧美激情| 欧洲精品一区二区| 亚洲mv在线观看| 欧美乱妇20p| 韩国女主播成人在线观看| 精品精品国产高清一毛片一天堂| 香蕉久久一区二区不卡无毒影院| 在线观看一区二区视频| 日韩精品欧美成人高清一区二区| 欧美亚洲国产bt| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美xxxxx裸体时装秀| 国产成人高清在线| 亚洲综合视频网| 国产午夜一区二区三区| 色八戒一区二区三区| 男男视频亚洲欧美| 国产精品久线在线观看| 欧美图区在线视频| 韩国成人在线视频| 自拍视频在线观看一区二区| 色婷婷精品大视频在线蜜桃视频 | 亚洲精品国产无天堂网2021| 欧美一区二区精美| 国产成人亚洲综合a∨婷婷图片| 亚洲图片你懂的| 久久久91精品国产一区二区精品| 顶级嫩模精品视频在线看| 日本视频在线一区| 亚洲午夜一区二区| 亚洲人成在线播放网站岛国| 欧美变态凌虐bdsm| 91精品福利在线一区二区三区 | 欧美高清www午色夜在线视频| 成人性视频免费网站| 裸体歌舞表演一区二区| 青青草国产成人99久久| 亚洲一区二区三区在线看| 亚洲欧美综合在线精品| 国产午夜精品福利| 国产亚洲欧美色| 国产喂奶挤奶一区二区三区| 久久久久免费观看| 国产精品嫩草影院com| 国产精品久久久久aaaa樱花| 亚洲欧洲日韩综合一区二区| 伊人婷婷欧美激情| 日本视频一区二区三区| 久久福利视频一区二区| 国产精品亚洲午夜一区二区三区 | 国产一区二区三区久久久| 国产一区二区三区视频在线播放| 国产美女视频91| 99r国产精品| 欧美日韩在线亚洲一区蜜芽| 8v天堂国产在线一区二区| 日韩精品一区二区三区swag| 中文字幕av一区二区三区| 亚洲一二三区视频在线观看| 久久99久久精品欧美| 懂色av中文一区二区三区| 91久久精品国产91性色tv| 26uuuu精品一区二区| 亚洲夂夂婷婷色拍ww47| 激情偷乱视频一区二区三区| gogo大胆日本视频一区| 日韩欧美另类在线| 亚洲一区二区三区四区五区黄| 美女视频一区二区| 在线看不卡av| 亚洲毛片av在线| 波多野结衣亚洲| 国产清纯在线一区二区www| 亚洲成人免费电影| 99国内精品久久| 中文字幕一区二区三区在线播放| 韩国理伦片一区二区三区在线播放|