Menjalankan pelayan dalam goroutine?

王林
Lepaskan: 2024-02-11 08:30:08
ke hadapan
434 orang telah melayarinya

在 goroutine 中运行服务器?

Editor PHP Apple akan membincangkan soalan dalam artikel ini: "Menjalankan pelayan dalam goroutine ialah mekanisme serentak ringan dalam bahasa Go yang boleh mencipta beribu-ribu unit pelaksanaan serentak dalam program ini. Tetapi adakah mungkin untuk menjalankan pelayan dalam goroutine? Jawapan kepada soalan ini tidak mudah dan terdapat beberapa faktor yang perlu dipertimbangkan. Dalam kandungan berikut, kami akan meneroka masalah ini dan memberikan beberapa penyelesaian.

Kandungan soalan

Saya mempunyai perkhidmatan Golang yang mendengar mesej Kafka, tetapi saya juga ingin memulakan pelayan http di dalamnya untuk pemeriksaan kesihatan. Kod pelayan adalah mudah:

package server

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

func Start() {
    port := ":8080"
    r := setupRouter()
    r.Run(port)
}

func setupRouter() *gin.Engine {
    r := gin.Default()

    r.GET("/health", func(ctx *gin.Context) {
        ctx.JSON(http.StatusOK, gin.H{"status": "OK"})
    })

    return r
}
Salin selepas log masuk

Dalam fungsi utama, saya hanya memanggil fungsi Start().

server.Start()
Salin selepas log masuk

Adakah ini okay? Atau patutkah saya melakukan ini dalam goroutine seperti ini:

go func(){
   server.Start()
}()
Salin selepas log masuk

Banyak perkara lain sedang berlaku dalam main.go - pendengar baris gilir dimulakan, pangkalan data dsb.

Penyelesaian

Jika anda tidak mahu Run menyekat utas utama anda, anda memerlukan rutin pergi.

go server.Start()

Atas ialah kandungan terperinci Menjalankan pelayan dalam goroutine?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan