【问题标题】:mod_wsgi: Global statements execute only when the file is modifiedmod_wsgi:全局语句仅在文件被修改时执行
【发布时间】:2013-05-15 12:46:36
【问题描述】:

我在mod_wsgi 上使用python,并且在脚本的全局部分(application 函数之外)有一些语句(调试消息和其他内容)。
这些全局语句仅在 .py 文件被修改(触摸)后执行一次。如果我再次更新网页,这些语句直到我下次编辑/触摸 .py 文件时才会执行。

我猜原因是某种级别的缓存机制(python 级别?wsgi 级别?)。

有什么我可以配置的或任何东西,以便始终执行脚本全局部分中的语句吗?

【问题讨论】:

    标签: python windows apache global-variables mod-wsgi


    【解决方案1】:

    阅读有关源代码重新加载的 mod_wsgi 文档。

    简而言之,使用守护模式而不是嵌入模式,并在对任何代码进行任何更改后触摸 WSGI 脚本文件,它将强制重新加载守护进程。

    【讨论】:

    • 不幸的是我在 Windows 上,所以我不能使用守护进程模式
    • 如果您一直读到最后,该文档提供了有关如何在 Windows 中添加监视器线程以仅在文件更改时自动重启的秘诀。
    【解决方案2】:

    我找到了解决办法:

    MaxRequestsPerChild 1
    

    将 apache 设置为在杀死每个子节点之前只处理一个请求,每次都会强制重新加载源代码。
    我不知道这是否是最好的方法,但至少目前有效。

    【讨论】:

    • 不建议将 MaxRequestsPerChild 设置为 1。
    • @GrahamDumpleton,是的,用于生产服务器。但我现在处于发展阶段。
    猜你喜欢
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 2017-11-24
    • 2021-03-08
    • 2011-06-30
    相关资源
    最近更新 更多