我想知道goroutine和go web服务器在请求到达时是如何工作的:
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
在这个守则中
对/
的每个请求都调用handler
。这是否意味着每个请求都生成自己的goroutine?或者它会产生自己的process
或{
其他语言如何处理此请求?例如,Python flask是否为每个请求启动自己的进程?
谢谢
Go的HTTP服务器(在
net/http
)根据http://golang.org/pkg/net/http/#Server.Serve的文档为每个请求生成一个goroutine(而不是一个线程)-其他语言以多种方式处理此问题,包括:
我建议阅读https://www.digitalocean.com/community/tutorials/a-comparison-of-rack-web-servers-for-ruby-web-applications以了解一些RubyWeb服务器是如何工作的(包括上面的方法),而{a4}则是Python的例子,这应该能给我们一些启示。在
相关问题 更多 >
编程相关推荐