如何让Python/Nginx/FastCGI在更新/更改时自动重新编译代码?

问题描述:

所以我一直在研究我的第一个Django/Python项目,并且让我的生产服务器正常运行。我想知道是否有可能让Python/FastCGI(不太确定哪个是负责任务的)重新编译我的代码。截至目前,当我上传更新的代码时,我需要重新启动服务器才能进行更改。我读过你可以添加一些mysite.fcgi文件给lighttpd,这样看来你已经更新了代码,你可以对Nginx/FastCGI做同样的事情吗?如何让Python/Nginx/FastCGI在更新/更改时自动重新编译代码?

+0

一般而言,您不希望在生产环境中这样做,因为您必须统计所使用的所有文件,这些文件通常会降低所有文件的速度。 – dietbuddha 2011-03-19 18:25:37

为任何其他人感兴趣的是我的问题..这是只能解决部分问题,但我在这里结束了发现我的回答:How to gracefully restart django running fcgi behind nginx?

您只需运行该脚本(我要修改有点),每次你编辑你的代码时,它都会正常地重启所有的东西而不会丢失连接。

这是一个来自mod_wsgi项目的general guide,概述了如何监视来自app_wsgi.py的代码更改,并在任何模块发生更改时重新启动当前进程。您需要重新启动Python进程,因为线程争夺模块可能意味着新加载的模块已经过时了来自其他模块的引用,这些模块仍然在等待被发现用于重新加载。

如果你想要一些与nginx,Django和wsgi应用程序很好地结合的东西,请查看Spawning作为你的wsgi服务器。这是代码重新加载的方法就像获得的优雅一样。

它有很好的文档,有详细记录的请求处理模型,它只是起作用,这使得它很容易配置。从现在开始,你需要不到五分钟的时间,让你的Django实例在Spawning上运行。这是另一个topical blog让你的果汁运行。

+1

在Apache/mod_wsgi文档中描述的代码监视是针对mod_wsgi的,并且可能无法正常运行,或者根本无法与其他主机机制一起运行。 – 2011-03-19 15:07:19

+0

谢谢,我会看看那个。 – Chris 2011-03-19 15:28:42