Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menutup Permintaan HTTP untuk Pemprosesan Latar Belakang dengan Betul?

Bagaimana untuk Menutup Permintaan HTTP untuk Pemprosesan Latar Belakang dengan Betul?

DDD
DDDasal
2024-10-28 15:17:021061semak imbas

 How to Properly Close an HTTP Request for Background Processing?

Menutup Permintaan HTTP untuk Pemprosesan Latar Belakang Dengan Betul

Dalam permintaan HTTP, selalunya wajar untuk bertindak balas dengan segera semasa memproses muatan permintaan dalam latar belakang. Ini dicapai dengan mengakui permintaan dengan kod status 202 Diterima, membolehkan pelanggan meneruskan tanpa menunggu selesai tugas latar belakang.

Membalas dengan 202 Diterima

Untuk mengendalikan permintaan sedemikian dengan betul, adalah penting untuk menutup permintaan selepas menghantar pengepala 202 Accepted. Ini kerana pengembalian daripada pengendali menandakan selesainya permintaan. Oleh itu, adalah disyorkan untuk menutup permintaan secara eksplisit sebelum memulakan tugas latar belakang:

<code class="golang">func index(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusAccepted)
    go sleep()
    return // Close the request
}</code>

Membalas dengan 200 OK

Apabila membalas dengan 200 OK, ia sudah memadai untuk kembali daripada pengendali, kerana pengepala HTTP akan ditetapkan secara automatik untuk menunjukkan respons yang berjaya.

<code class="golang">func index(w http.ResponseWriter, r *http.Request) {
    go sleep()
    return // Close the request
}</code>

Awas

Adalah penting untuk ambil perhatian bahawa HTTP nilai permintaan dan respons tidak boleh digunakan dalam goroutine latar belakang selepas permintaan ditutup, kerana ia mungkin digunakan semula.

Atas ialah kandungan terperinci Bagaimana untuk Menutup Permintaan HTTP untuk Pemprosesan Latar Belakang dengan Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn