Mencuba Semula Permintaan HTTP yang Gagal dalam Go
Apabila cuba menolak data ke pelayan Apache menggunakan GoLang dan menghadapi ralat, adalah penting untuk dipertimbangkan sama ada permintaan HTTP akan mencuba semula secara automatik. Jawapan kepada soalan ini adalah negatif, bermakna anda mesti melaksanakan mekanisme cuba semula tersuai.
Dalam kod yang disediakan, anda menggunakan kaedah http.DefaultClient.Do untuk melaksanakan permintaan. Kaedah ini tidak mengendalikan percubaan semula secara automatik sekiranya pelayan tidak tersedia atau ralat lain. Untuk menggabungkan logik cuba semula, anda boleh menggunakan pendekatan tersuai seperti yang ditunjukkan dalam contoh berikut:
<code class="go">package main import ( "fmt" "io/ioutil" "log" "net/http" "time" ) func main() { var ( err error response *http.Response retries int = 3 ) for retries > 0 { response, err = http.Get("https://non-existent") // Change the URL to "https://google.com/robots.txt" for testing if err != nil { log.Println(err) time.Sleep(2 * time.Second) // Introduce a delay between retries retries -= 1 continue } else { break } } if response != nil { defer response.Body.Close() data, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } fmt.Printf("data = %s\n", data) } }</code>
Dalam contoh ini, fungsi masa.Tidur telah digunakan untuk memperkenalkan kelewatan antara percubaan semula. Anda boleh melaraskan kelewatan berdasarkan keperluan khusus permohonan anda. Ingat untuk mengendalikan sebarang pengecualian atau ralat yang mungkin berlaku semasa proses percubaan semula, memastikan kestabilan dan kebolehpercayaan pemindahan data anda.
Atas ialah kandungan terperinci Bagaimana untuk Mencuba Semula Permintaan HTTP yang Gagal dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!