WSGI、CGI、FastCGI和mod_python在Python方面的区别和用途是什么?

84

我想知道不同CGI之间的差异和优势。哪一个对Python脚本最好,并且我该如何告诉脚本使用哪一个CGI?


mod_wsgi更快吗?我的当前服务器使用CGI,有哪些原因可以切换? - Parker
可能重复:https://dev59.com/oHVC5IYBdhLWcg3wqzHV - Koroviev
我们无法告诉您mod_wsgi在您的环境中是否更快。您必须在您的环境中使用您的限制、应用程序和配置实际测试它们。 - S.Lott
mod_wsgi仅适用于Apache。它在2012年是否仍然是最流行的? - anatoly techtonik
4个回答

48

你的问题的部分答案,包括scgi。

CGI vs FCGI

懒惰并不打算自己写。从维基百科上摘录:http://en.wikipedia.org/wiki/FastCGI

FastCGI使用持久进程来处理请求,而不是为每个请求创建一个新进程。可以配置多个进程,增加稳定性和可扩展性。每个独立的FastCGI进程可以在其生命周期内处理许多请求,从而避免了每个请求的进程创建和终止的开销。


1
有一个FastCGI stdio库(marcos),可以让您编写一个程序,既可以作为CGI运行,也可以作为FastCGI应用程序运行:http://www.fastcgi.com/devkit/doc/fastcgi-prog-guide/ap_guide.htm - xorcus
1
有一个与FastCGI相关的问题:当PHP本身是阻塞语言时,它如何处理使用一个进程的同时连接?如果我有类似于 "sleep(100)" 的东西,它不会阻塞其他用户的进程吗?谢谢。 - user345602

19

1
这是初学者的绝佳资源。 - GiriB
2
看起来这个URL已经过时了。但是这个可以用:https://docs.python.org/2/howto/webservers.html - lesnik

12
在类似Django这样的项目中,您可以使用Web服务器网关接口(Web Server Gateway Interface)服务器来自Flup模块
WSGI服务器使用一个或多个协议封装后端进程:

在2019年,WSGI被ASGI(异步服务器网关接口)所取代,像FastAPI这样的框架在Uvicorn这样的服务器上使用它,这使得它速度更快


6
  • FastCGI是一种长期运行的CGI,它将始终在运行。
  • 使用FastCGI可以节省时间。
  • 由于多进程,FastCGI会比CGI消耗更多的内存。

详细了解FastCGI与CGI的区别


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接