【问题标题】:Files being served are stale / cached ; Python as fcgi + web.py + nginx提供的文件是陈旧的/缓存的; Python 为 fcgi + web.py + nginx
【发布时间】:2013-01-18 17:07:08
【问题描述】:

我正在使用 Nginx 和 fcgi、python 和 web.py 在 ubuntu 中提供文件。我的 index.py 内容是:

app = web.application(urls, globals(), True)
if __name__ == "__main__":
    web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
    app.run()

我正在启动:

spawn-fcgi -n -d /usr/share/nginx/www -f ~/Projects/index.py -a 127.0.0.1 -p 9002

这很好用,除了,一旦我对源文件(index.py 或它包含的任何类)进行了更改,这些新文件就永远不会加载。我必须停止 spawn-fcgi 并重新启动它以查看任何更改。这使得开发非常繁琐。

此外,我还关闭了 python .pyc/cache 文件的生成。

TIA

【问题讨论】:

    标签: python ubuntu nginx web.py fastcgi


    【解决方案1】:

    这很可能是设计使然。

    您通常不希望在生产环境中重新加载模块(性能,并且由于 Python 中的模块重新加载并不总是具有预期的效果)。

    对于开发,使用一些其他更简单的服务器模型(例如,Django 为这个确切目的提供了自己的开发服务器,我没有使用过 webpy,但它似乎具有与 tutorial 相同的功能)。仅在部署 webapp 时使用 nginx,而不是在您的开发环境中。

    在正常情况下,您不必担心 .pyc 文件(在一些有问题的 NFS 设置中,或者当 .pyc 文件由错误的用户使用错误的权限创建时除外)。

    【讨论】:

      【解决方案2】:

      我使用 nginx+uwsgi 或 apache+mod_wsgi 部署我的应用程序,如果我touch code.py,它们都会重新加载应用程序。但我在开发时从集成服务器运行应用程序。

      如果在开发模式下运行具有自己的重新加载器的 web.py 集成服务器不是一种选择,那么唯一的选择是编写您自己的具有重新加载功能的调度程序。

      【讨论】:

        猜你喜欢
        • 2017-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 2016-10-11
        • 2018-10-09
        • 2021-07-23
        • 2016-05-20
        相关资源
        最近更新 更多