我嘗試通過發出獲取請求從 kibana 服務器獲取 csv 數據。在此服務器向我發送帶有數據的響應后,我編寫csv文件并保存在某個地方。每次 csv 文件都有一行“掛起”。Kibana日志顯示狀態代碼503但是如果我把網址放在瀏覽器中,我可以得到帶有正確數據的csv文件??赡芪倚枰却鄟碜曰图{的回應。從我的角度來看,問題就在下一個:服務器可以向我發送帶有單行“待處理”的響應,這意味著它需要更多時間來準備正確的響應。我試圖增加客戶時間,但它不起作用client := http.Client{ Timeout: 10 * time.Second,}接下來是帶有go例程和通道/等待組的想法:他們強制Get請求等待獲取正確的數據,而不是“待定”和503狀態代碼import ( "encoding/json" "errors" "fmt" "io/ioutil" "log" "net/http" "sync")type KibanaReportResponse struct { Path string `json:"path"`}var urlKibanaBase = "http://localhost:5601"var urlKibanaPost = urlKibanaBase + "/api/reporting/generate/csv_searchsource?"var urlParameters = "jobParams=%28browserTimezone%3AEurope%2FBerlin%2Ccolumns%3A%21%28%29%2CobjectType%3Asearch%2CsearchSource%3A%28fields%3A%21%28%28field%3A%27%2A%27%2Cinclude_unmapped%3Atrue%29%29%2Cindex%3Aec074c00-1f62-11ec-8056-8d208a1f6e77%2Cparent%3A%28filter%3A%21%28%29%2Cindex%3Aec074c00-1f62-11ec-8056-8d208a1f6e77%2Cquery%3A%28language%3Akuery%2Cquery%3A%27%27%29%29%2Csort%3A%21%28%28_score%3Adesc%29%29%2CtrackTotalHits%3A%21t%2Cversion%3A%21t%29%2Ctitle%3A%27Discover%20search%20%5B2021-09-27T09%3A19%3A44.977%2B02%3A00%5D%27%29"var urlWithParam = urlKibanaPost + urlParametersfunc main() { var wg sync.WaitGroup wg.Add(1) pathCsvFile := getCsvPathFromKibana(urlWithParam) go getCsvFile(urlKibanaBase, pathCsvFile, &wg) defer wg.Wait()}func getCsvPathFromKibana(urlKib string) string { resKibana := KibanaReportResponse{} client := &http.Client{} if req, err := http.NewRequest("POST", urlKib, nil); err != nil { log.Println("Given a method, URL, andoptional body are wrong", err) }
1 回答

吃雞游戲
TA貢獻1829條經驗 獲得超7個贊
Kibana 服務器需要一些時間來準備響應。我添加了一些代碼,用于向通道發出信號,以等待一段時間,并在等待向客戶端重復請求后再等待
if res.StatusCode != 200 { time.Sleep(30 * time.Second) }
- 1 回答
- 0 關注
- 642 瀏覽
添加回答
舉報
0/150
提交
取消