重启运行在Apache + mod_python上的Django应用
我在用 Apache 和 mod_python 运行一个 Django 应用。当我对代码做了一些修改时,有时候这些修改会立刻生效,但有时候却需要重启 Apache 才能看到效果。不过我不太想重启,因为这是一个生产服务器,还在运行其他东西。有没有什么其他方法可以强制让修改生效呢?
为了更清楚,我想说明一下,因为我看到有些人理解错了,我说的是 生产 环境。当然,在开发时我使用的是 Django 的开发服务器。
4 个回答
1
你可以通过在httpd.conf文件中设置“MaxRequestsPerChild 1”来把连接数量减少到1。不过,这个设置只适合在测试服务器上使用,不要在正式的服务器上这样做。
或者
如果你不想强制断开已有的连接,但又想重启Apache服务器,可以选择“优雅重启”。你只需要执行“apache2ctl gracefully”这个命令,这样所有正在进行的连接都会被允许完成。
4
正如其他人所建议的,建议使用mod_wsgi。为了实现自动重载功能,你可以通过修改WSGI脚本文件,或者使用一个监控工具来检查代码变化,这样就能在UNIX系统上使用守护进程模式。对于Windows系统,当使用嵌入模式时,也可以通过一些小技巧来实现同样的效果。具体的细节可以在这里找到:
15
如果可以的话,你应该切换到 mod_wsgi。这现在是 推荐的方式 来运行 Django,而且在内存和服务器资源的使用上要高效得多。
在 mod_wsgi 中,每个网站都有一个 .wsgi
文件。要重启一个网站,只需 touch
相关的文件,这样只有那部分代码会被重新加载。