第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多個Http.Get隨機掛起

多個Http.Get隨機掛起

Go
Helenr 2023-04-17 16:28:24
我正在嘗試學習 Golang 并進行了一個簡單的項目來調(diào)用所有 craigslist 城市并查詢它們以進行特定搜索。在下面的代碼中,我刪除了 listingmap 中的所有鏈接,但那里有超過 400 個鏈接。所以循環(huán)相當大。我認為這將是一個很好的測試,可以將我所學的知識付諸應用,但我遇到了一個奇怪的問題。有時大多數(shù) Http.Get() 都得不到服務器的響應,而其他時候則毫無問題地獲得所有響應。所以我開始添加打印件來顯示有多少錯誤我們恢復了,有多少成功通過了。此外,在運行時它會隨機掛起并且從不響應。該程序不會凍結,但該站點只是坐在那里嘗試加載并且終端沒有顯示任何活動。我通過在恢復后推遲清理來確保我的響應主體已關閉,但它似乎仍然不起作用。有沒有什么東西讓任何人跳出來,也許我錯過了?提前謝謝大家!
查看完整描述

2 回答

?
慕哥9229398

TA貢獻1877條經(jīng)驗 獲得超6個贊

Craigslist 也可能只是限制你的速度。無論哪種方式,我建議將并發(fā)請求限制在 20 個左右,這里是對您的listingAggHandler.

queue := make(chan Listings, 99999)

listing_map := make(map[string]Listing)


request_queue := make(chan string)

for i := 0; i < 20; i++ {

? ? go func() {

? ? ? ? for {

? ? ? ? ? ? key := <- request_queue

? ? ? ? ? ? cityRoutine(queue, key)? ? ? ? ? ? ? ??

? ? ? ? }

? ? }()

}


for key, _ := range locationMap {

? ? wg.Add(1)

? ? request_queue <- key

}


wg.Wait()

close(request_queue)

close(queue)

該應用程序應該仍然非??臁N乙餐鈱δ愕膯栴}的其他評論。也會盡量避免在全球范圍內(nèi)投入太多。


您還可以通過僅使用請求池中的等待組來稍微修飾我的更改,并讓每個 goroutine 自行清理并減少等待組。這將限制一些全球范圍。


查看完整回答
反對 回復 2023-04-17
?
慕尼黑8549860

TA貢獻1818條經(jīng)驗 獲得超11個贊

像許多人建議的那樣刪除了全局 WaitGroup 并將其作為參數(shù)(指針)傳入以清理代碼。至于之前的報錯問題,肯定是像maxm說的maxm HTTP request max out了。一旦我在每 20 次搜索之間添加一個等待,我就沒有看到任何錯誤。該程序的運行速度比我希望的要慢一些,但出于學習目的,這很有幫助。


以下是所需代碼的主要更改。


? ? ? ? counter := 0

? ? for key, _ := range locationMap {

? ? ? ? if(counter >= 20) {

? ? ? ? ? ? wg.Wait()

? ? ? ? ? ? counter = 0

? ? ? ? }

? ? ? ? wg.Add(1)

? ? ? ? frmtSearch := key + "search/sss?format=rss&query=" + strings.Replace(p.SearchRequest, " ", "%20", -1)

? ? ? ? go cityRoutine(queue, frmtSearch, &wg)

? ? ? ? counter++

? ? }


查看完整回答
反對 回復 2023-04-17
  • 2 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號