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

2 投票
2 回答
2022 浏览
提问于 2025-04-16 14:01

我最近在做我的第一个Django/Python项目,已经把生产服务器搭建好了。我想知道,能不能让Python/FastCGI(我不太确定哪个负责这个任务)自动重新编译我的代码。现在,当我上传更新的代码时,我需要重启服务器才能看到更改。我听说可以在lighttpd中添加一个mysite.fcgi文件,这样它就能检测到你更新了代码。那么在Nginx/FastCGI中也能这样做吗?

2 个回答

1

这是来自mod_wsgi项目的一份通用指南,它讲述了如何监控你的app_wsgi.py文件中的代码变化,并在任何模块发生变化时重启当前进程。你需要重启Python进程,因为如果多个线程在争用模块,可能会导致新加载的模块引用了其他仍在等待重新加载的模块的过时信息。

如果你想要一个与nginx、Django和一般wsgi应用配合得很好的解决方案,可以看看Spawning作为你的wsgi服务器。它的代码重载方式非常优雅。

它有很好的文档,处理请求的模型也很清晰,而且运行起来非常顺利,这让配置变得简单明了。你只需要不到五分钟就能让你的Django实例在Spawning上运行。这里还有一篇相关博客,可以激发你的兴趣。

2

对于其他对我问题感兴趣的人来说……这只是一个部分解决方案,但我最终在这里找到了我的答案: 如何优雅地重启在nginx后面运行的django的fcgi?

你只需要运行这个脚本(我会稍微修改一下),每次你编辑代码时,它就会优雅地重启所有内容,而不会断开连接。

撰写回答