Python虚拟主机:为什么需要重启服务器?

Leo*_*eon 6 python web-hosting

我们目前在我们的服务器上为几百个小型PHP站点运行一个小型共享托管服务.我们也想提供Python支持,但至少从我们的初步研究来看,每次源代码更改后似乎都需要重启服务器.

这是真的吗?如果是这样,我们就无法提供Python托管支持.让我们的客户能够上传文件很容易,但我们不能让他们重新启动(共享)服务器进程!

PHP很简单 - 上传新版本的文件,运行新版本.

我非常尊重Python语言和社区,所以很难相信它真的需要一个疯狂的过程来更新网站的代码.请告诉我,我错了!:-)

Joh*_*kin 7

Python是一种编译语言; 编译后的字节代码由Python进程缓存以供以后使用,以提高性能.默认情况下,PHP被解释.这是可用性和速度之间的权衡.

如果您使用的是标准的WSGI模块,例如Apache mod_wsgi,那么您不必重新启动服务器 - 只需触摸该.wsgi文件即可重新加载代码.如果您正在使用一些不支持WSGI的奇怪服务器,那么您可以根据自己的可用性进行操作.


Joh*_*ett 4

取决于您如何部署 Python 应用程序。如果它是一个纯 Python CGI 脚本,则不需要重新启动(但不建议这样做,因为它会非常慢)。如果您在 Apache 中使用 modwsgi,则有一些有效的方法可以重新加载源代码。modpython 显然对模块重新加载有一些支持和伴随的问题

除了 Apache 之外,还有其他方法可以托管 Python 应用程序,包括 CherryPy 服务器、Paste Server、Zope、Twisted 和 Tornado。

但是,除非您有特定原因不使用它(因为您可能来自 Apache/PHP 商店),否则我强烈推荐 Apache 上的 mod_wsgi。我知道 Django 推荐在 Apache 上使用 modwsgi,并且大多数其他主要 Python 框架都可以在 modwsgi 上运行。

  • 值得注意的是,mod_wsgi 的“嵌入”模式除了存在性能和可靠性问题之外,还妨碍了代码重新加载的正确操作。我*总是*在守护进程模式下配置我的服务器,并且根据我从其他人那里听到的消息,更改为守护进程模式可以修复“mod_wsgi”的许多问题。 (4认同)