【问题标题】:why do we need to restart apache after changing some file in django project为什么我们需要在 django 项目中更改某些文件后重新启动 apache
【发布时间】:2012-02-28 10:14:24
【问题描述】:

我已经在 Apache/mod_wsgi 上的 Windows 7 上设置了 Django。每次更改任何 python 代码时,我都需要停止,然后启动服务器。有没有办法避免它?

这不会发生在 javascript/php 更改中,即无需重新启动 apache 即可查看更改代码的效果。朝着正确的方向推进将大有帮助。谢谢!

【问题讨论】:

    标签: django apache


    【解决方案1】:

    您不必重新启动 Apache。只需修改 wsgi 文件(在 UNIX 环境中,您可以使用touch myfile.wsgi),它将被重新加载。换句话说,只要确保你的 wsgi 文件的最后修改日期已经更新,即使文件内容本身没有更新。

    附:我假设您正在以守护程序模式运行。如果您使用的是嵌入式模式,那么我的建议对您没有帮助,我不知道是否可以这样做...另请参阅this question

    编辑:抱歉,我不知道守护程序模式是 only supported on UNIX。在这种情况下,也许其他问题中的链接会有所帮助,但我无法确定,因为我没有这方面的经验。

    【讨论】:

    • 好吧,我阅读了文档here,确实,wsgi 在 Windows 7 中以嵌入式模式运行。因此,每次我进行微不足道的更改时,除了重新启动服务器之外别无选择。而且我不喜欢MaxRequestsPerChild 1 解决方案,因为即使对于 php/js 文件,它也会重新启动服务器。因此,在 Windows 中没有解决方案 :(
    【解决方案2】:

    在以下位置阅读有关它的官方文档:

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

    【讨论】:

    • 嗨@Graham,我浏览了文档并在#Monitoring_For_Code_Changes 部分下安装了代码。有用。谢谢...
    【解决方案3】:

    这是因为 Python 代码缓存在 .pyc 文件中。在使用该缓存之后,它会被解释一次。 对不起,我的错误!感谢您指出。

    如果您需要经常更改文件并立即看到结果进行开发,请使用 Django 内置的开发服务器。

    使用 python 解释器从命令行调用它: python manage.py runserver

    然后您将在端口 8000 上运行@localhost 的应用程序

    请去阅读文档!

    【讨论】:

    • 代码缓存在内存中,而不是.pyc文件中。您可以删除相应的.pyc 文件,但您仍需要重新启动服务器才能看到您的更改。
    • pyc 文件与它无关。首先,Apache 用户通常不会拥有创建 pyc 文件的写权限。其次,加载的模块已经在内存中,因此 pyc 文件不会在后续请求中使用,仅在进程启动时使用,此时如果 py 文件发生更改,Python 将自动重新生成它们。
    猜你喜欢
    • 2012-10-05
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2023-04-04
    • 2016-06-04
    • 2011-05-11
    • 2018-09-20
    • 1970-01-01
    相关资源
    最近更新 更多