Apabila menggunakan golang untuk membangunkan perkhidmatan http, anda mungkin menghadapi masalah tamat masa permintaan. Masalah seperti ini boleh menjejaskan kestabilan dan kebolehpercayaan perkhidmatan, jadi penyelesaian perlu dicari. Artikel ini akan memperkenalkan masalah tamat masa permintaan http golang dan penyelesaiannya.
Dalam perkhidmatan http, permintaan tamat masa ialah masalah biasa. Sebagai contoh, apabila pelanggan menghantar permintaan, jika pelayan tidak bertindak balas dalam masa yang ditentukan, atau ralat berlaku semasa respons, permintaan akan tamat masa.
Dalam golang, masalah ini boleh diselesaikan dengan menetapkan atribut Tamat Masa dalam Klien atau atribut Tamat Masa dalam http.Transport.
http.Pelanggan di golang menyediakan sifat Tamat Masa untuk menetapkan tamat masa permintaan. Secara lalai, sifat Tamat Masa ditetapkan kepada sifar, menunjukkan tiada had tamat masa. Apabila atribut Tamat masa ditetapkan kepada nilai bukan sifar, pelayan akan menunggu respons dalam masa yang ditentukan.
Sebagai contoh, kod berikut menetapkan had tamat masa selama 2 saat:
client := &http.Client{ Timeout: time.Second * 2, }
Apabila permintaan tamat, ralat tamat masa (net/http: request canceled (Client.Timeout exceeded while awaiting headers)
) dikembalikan. Ralat boleh dibuang atau dikendalikan dengan sewajarnya mengikut keperluan sebenar.
Selain menetapkan sifat Tamat Masa http.Client, anda juga boleh mengawal tamat masa permintaan dengan menetapkan sifat http.Transport . Khususnya, anda boleh menetapkan sifat seperti DialTimeout, TLSHandshakeTimeout, ResponseHeaderTimeout dan ExpectContinueTimeout.
Sebagai contoh, kod berikut menetapkan DialTimeout 2 saat:
transport := &http.Transport{ DialContext: (&net.Dialer{ Timeout: 2 * time.Second, KeepAlive: 30 * time.Second, }).DialContext, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 2 * time.Second, } client := &http.Client{ Timeout: time.Second * 2, Transport: transport, }
Apabila tamat masa berlaku, ralat tamat masa (dial tcp: i/o timeout
) dikembalikan. Ralat boleh dibuang atau dikendalikan dengan sewajarnya mengikut keperluan sebenar.
Di golang, menetapkan tamat masa permintaan merupakan langkah penting untuk memastikan kestabilan dan kebolehpercayaan perkhidmatan. Kawalan tamat masa permintaan boleh dicapai dengan menetapkan sifat Tamat Masa http.Client atau harta http.Transport. Dalam pembangunan sebenar, adalah perlu untuk menetapkan tamat masa yang sesuai berdasarkan keperluan untuk memastikan operasi normal perkhidmatan.
Atas ialah kandungan terperinci golang http permintaan tamat masa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!