为什么不是 golang WSGI 实现

我们在 Python 中有并发问题。这些 WSGI 服务器并没有那么好用。我环顾四周,没有像 Golang 编写的 WSGI 服务器及其 goroutine。

有什么原因吗?


一只萌萌小番薯
浏览 422回答 2
2回答

心有法竹

WSGI协议特定于 Python¹。使用 Go,你有三个选项(实际上是四个,但CGI对于中到高负载设置,应该不考虑普通):HTTPGo 标准库的内置服务设施。在这种情况下,您的应用程序是一个独立的服务器。这可能是最简单的设置,但可能存在以下问题:要在特权端口号(低于 1024,并且 80 在此范围内)上以降级的特权(您必须这样做)运行您的应用程序,您需要使用专门的包装器或 POSIX 功能。为了在不丢失连接的情况下提供优雅的重新部署,您需要另一个包装器(如goagain)。与上面相同,但在HTTPWeb 服务器形式的反向代理后面。主要消除了独立变体的问题,但仍然有HTTP来回传递全流量的开销。FastCGI通过合适的网络服务器。 Nginx并且Apache(以及许多其他人)对此没有意见。 FCGI客户端实现在 Go 标准库中可用。除了没有独立设置的问题外,还实现了更高效的数据交换协议。另一个好处是您的 Go 服务器可能使用 Unix 管道与前端 Web 服务器通信,其传输成本低于反向HTTP代理变体中涉及的 TCP 套接字。因此,如果您的设置当前使用WSGI,我会说使用FCGI.¹ 正如一些评论者指出的那样,严格来说,这并不完全正确:WSGI 允许将用任何语言编写的 Web 服务应用程序与 Web 服务器或应用程序服务器(依次连接到 Web 服务器)分离。为了实现这一点,双方必须使用相同的协议 WSGI,该协议与语言无关。尽管如此,似乎大多数不是用 Python 编写的软件会使用 HTTP 或 FastCGI 与前端服务器进行通信。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go