我们在Python中有并发问题.这些WSGI服务器无法正常工作.我环顾四周,没有像Golang写的WSGI服务器及其goroutines.
有什么原因?
WSGI
协议特定于Python.使用Go,您有三个选项(实际上,有四个选项,但普通CGI
应该不考虑中等到高负载设置):
HTTP
Go标准图书馆的内置服务设施.
在这种情况下,您的应用程序是独立服务器.这可能是最简单的设置,但可能存在以下问题:
要在特权端口号(低于1024,并且80在此范围内)中以降级权限(必须执行此操作)运行应用程序,您将需要使用专门的包装器或POSIX功能.
要在不丢失连接的情况下提供优雅的重新部署,您将需要另一个包装器(如goagain
).
与上面相同,但在HTTP
Web服务器形式的反向代理之后.
主要是消除了独立变体的问题,但仍然有HTTP
来回传递完整流量的开销.
FastCGI
通过合适的网络服务器. Nginx
和Apache
(和许多其他人)对此没问题. Go标准库中提供了FCGI
客户端实现.
除了没有独立设置的问题之外,还实现了更高效的数据交换协议.另一个好处是,您的Go服务器可能使用Unix管道与前端Web服务器通信,该管道的传输成本低于反向HTTP
代理变体中涉及的TCP套接字.
所以,如果您的设置目前使用WSGI
,我会说FCGI
.