重新启动在 Apache 上运行的 Django 应用程序 模组Python

发布于 2024-07-26 22:00:44 字数 222 浏览 5 评论 0原文

我正在 Apache + mod_python 上运行 Django 应用程序。 当我对代码进行一些更改时,有时它们会立即生效,有时则不会,直到我重新启动 Apache。 然而我真的不想这样做,因为它也是一个运行其他东西的生产服务器。 还有其他方法可以强制执行吗?

澄清一下,因为我看到有些人弄错了,所以我说的是生产环境。 当然,对于开发,我使用 Django 的开发服务器。

I'm running a Django app on Apache + mod_python. When I make some changes to the code, sometimes they have effect immediately, other times they don't, until I restart Apache. However I don't really want to do that since it's a production server running other stuff too. Is there some other way to force that?

Just to make it clear, since I see some people get it wrong, I'm talking about a production environment. For development I'm using Django's development server, of course.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

冷了相思 2024-08-02 22:00:44

如果可能,您应该切换到 mod_wsgi。 无论如何,这现在是服务 Django 的推荐方式,而且在内存和服务器资源方面更加高效。

在 mod_wsgi 中,每个站点都有一个与其关联的 .wsgi 文件。 要重新启动站点,只需触摸相关文件,然后只会重新加载该代码。

If possible, you should switch to mod_wsgi. This is now the recommended way to serve Django anyway, and is much more efficient in terms of memory and server resources.

In mod_wsgi, each site has a .wsgi file associated with it. To restart a site, just touch the relevant file, and only that code will be reloaded.

秋凉 2024-08-02 22:00:44

正如其他人所建议的,请使用 mod_wsgi 代替。 要通过触摸 WSGI 脚本文件或通过查找代码更改的监视器来获得自动重新加载的能力,您必须在 UNIX 上使用守护程序模式。 使用嵌入式模式时,在 Windows 上只需稍加操作即可实现相同的效果。 所有详细信息均可在以下位置找到:

http://code.google.com/p/ modwsgi/wiki/ReloadingSourceCode

As others have suggested, use mod_wsgi instead. To get the ability for automatic reloading, through touching the WSGI script file, or through a monitor that looks for code changes, you must be using daemon mode on UNIX. A slight of hand can be used to achieve same on Windows when using embedded mode. All the details can be found in:

http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

葬花如无物 2024-08-02 22:00:44

您可以通过在 httpd.conf 文件中设置“MaxRequestsPerChild 1”将连接数减少到 1。 但仅在测试服务器上进行,而不是在生产服务器上进行。

或者

如果您不想终止现有连接并仍然重新启动 apache,您可以通过执行“apache2ctl 优雅地”来“优雅地”重新启动它 - 所有现有连接都将被允许完成。

You can reduce number of connections to 1 by setting "MaxRequestsPerChild 1" in your httpd.conf file. But do it only on test server, not production.

or

If you don't want to kill existing connections and still restart apache you can restart it "gracefully" by performing "apache2ctl gracefully" - all existing connections will be allowed to complete.

乖乖 2024-08-02 22:00:44

使用 Django 中包含的测试服务器。 (如 ./manage.py runserver 0.0.0.0:8080)它将完成开发过程中您需要的大部分操作。 唯一的缺点是它无法通过多线程处理同时请求。

我听说有一个技巧,可以将 Apache 的最大实例设置为 1,以便立即反映每个代码更改 - 但因为您说您正在运行其他服务,所以这可能不是您的情况。

Use a test server included in Django. (like ./manage.py runserver 0.0.0.0:8080) It will do most things you would need during development. The only drawback is that it cannot handle simultaneous requests with multi-threading.

I've heard that there is a trick that setting Apache's max instances to 1 so that every code change is reflected immediately--but because you said you're running other services, so this may not be your case.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文