gpt4 book ai didi

python - Go Web 服务器请求产生自己的 goroutine?

转载 作者:IT王子 更新时间:2023-10-29 01:39:32 29 4
gpt4 key购买 nike

我想知道当请求进来时 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)
}

在这段代码中,

  1. / 的每个请求都会调用处理程序。这是否意味着每个请求都会产生自己的 goroutine?或者它会产生自己的 processthread 吗?是否有关于这些请求如何获得自己的 goroutine 的文档?

  2. 其他语言如何处理这个请求?例如,Python flask 是否会为每个请求启动自己的进程?

谢谢,

最佳答案

根据 http://golang.org/pkg/net/http/#Server.Serve 的文档,Go 的 HTTP 服务器(在 net/http 中)为每个请求生成一个 goroutine(不是线程) -

Serve accepts incoming connections on the Listener l, creating a new service goroutine for each. The service goroutines read requests and then call srv.Handler to reply to them.

其他语言以多种方式处理此问题,包括:

  • 基于事件的架构 ala node.js 1
  • 多个进程和/或线程(或两者),其中“管理器”根据阻塞(和非阻塞)在事件线程之间切换

我建议阅读 https://www.digitalocean.com/community/tutorials/a-comparison-of-rack-web-servers-for-ruby-web-applications有关某些 Ruby Web 服务器如何执行操作(包括上述方法)的示例,以及 https://www.digitalocean.com/community/tutorials/a-comparison-of-web-servers-for-python-based-web-applications对于 Python,应该可以提供一些见解。

关于python - Go Web 服务器请求产生自己的 goroutine?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31108408/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com