为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不是 golang WSGI 实现

为什么不是 golang WSGI 实现

Go
一只萌萌小番薯 2021-06-29 09:47:41
我们在 Python 中有并发问题。这些 WSGI 服务器并没有那么好用。我环顾四周,没有像 Golang 编写的 WSGI 服务器及其 goroutine。有什么原因吗?
查看完整描述

2 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

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 与前端服务器进行通信。



查看完整回答
反对 回复 2021-07-12
  • 2 回答
  • 0 关注
  • 421 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信