猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
为什么不是 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 与前端服务器进行通信。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Go
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续