部署python时,我们有哪些web服务器选项?这个过程根本没有效率吗?

2024-04-20 02:53:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我认为在过去,python脚本会运行CGI,这会为每个进程创建一个新线程。在

我是个新手,所以我不太确定,我们有什么选择?在

python使用的web服务器管道是否比php更有效?在


Tags: 服务器脚本web管道进程线程phpcgi
3条回答

我建议你吃樱桃酱(http://www.cherrypy.org/)。它使用起来非常方便,拥有制作web服务所需的一切,但仍然非常简单(没有巨型框架)。使用它的最有效的方法是在本地主机上作为自包含的服务器运行它,并通过代理语句将其置于Apache之后,并使Apache本身为静态文件提供服务。在

这通常比CGI和mod python之类的解决方案具有更好的性能,因为运行web服务的python进程独立于主web服务器运行,因此它可以缓存内容并轻松地重用资源(如DB句柄)。在

此外,您还可以分别调整Apache和web应用程序的工作线程数,从而获得更好的可伸缩性。在

如果您愿意,您仍然可以使用CGI,但是现在通常的方法是在Python端使用WSGI,例如在Apache上通过mod_wsgi或者在其他web服务器上通过网桥连接到{}。至少对于mod_wsgi,我知道这种方法没有效率低下。在

顺便说一句,你对CGI(“为每个进程创建一个新线程”)的描述是不准确的:它所做的是为每个查询的服务创建一个新进程(该进程通常需要打开一个数据库连接,导入所有需要的模块等),这可能会使它变慢,即使在分叉进程本身相当快的平台上,例如所有Unix变体)。在

我建议你用Djangohttp://www.djangoproject.com。它使用起来非常方便,拥有制作web服务所需的一切。使用它的最有效的方法是通过Apache的mod_wsgi运行它,并使Apache本身服务于静态文件。在

这通常比CGI和mod python之类的解决方案具有更好的性能,因为运行web服务的python进程独立于主web服务器运行,因此它可以缓存内容并轻松地重用资源(如DB句柄)。在

此外,您还可以分别调整Apache和web应用程序的工作线程数,从而获得更好的可伸缩性。在

相关问题 更多 >