【问题标题】:How to not restart the server everytime when working with Flask or Express?使用 Flask 或 Express 时如何不每次都重新启动服务器?
【发布时间】:2012-08-09 13:27:36
【问题描述】:

我是网络应用程序开发的新手。

我的问题是... 我在 node.js 下尝试了 Zend + Apache(php)、Flask(python)、Express 的一些动手开发。

我发现当我开始在 Zend framework + Apache,在Controller、Model或Views下PHP有代码变化时,无需每次重启apache。非常方便快捷!

但是,如果我在 Flask 或 Express 上工作,每次更改 Controller 或 Model 部分的代码时,我都必须重新启动整个应用程序。如果 View 部分有代码更改,则无需重新启动服务器。不过,够烦了!!!

现在,我正在开发 Flask 上的项目,如何避免每次都重新启动服务器???如果我把整个 web 应用放在 Nginx 上,问题能解决吗??

非常感谢

【问题讨论】:

    标签: zend-framework node.js flask


    【解决方案1】:

    更新:

    当 Flask 开启调试模式时,服务器会检测变化::

    from application import app
    app.debug = True
    
    if __name__ == '__main__':
        app.run()
    

    但是,在生产环境中,不建议自动刷新服务器。


    tornado之上运行它:

    $ pip install tornado
    

    创建一个新文件server.py,将app.py包装起来:

    from tornado import autoreload
    from tornado.wsgi import WSGIContainer
    from tornado.httpserver import HTTPServer
    from tornado.ioloop import IOLoop
    
    http_server = HTTPServer(WSGIContainer(app))
    http_server.listen(5000)
    ioloop = IOLoop.instance()
    autoreload.start(ioloop)
    ioloop.start()
    

    【讨论】:

    • 为什么有效?他们是否跟踪不同的 io 并自动重新加载服务器?
    • 对于 apache+ php,apache 是否会隐式重新加载??
    【解决方案2】:

    如果使用 mod_wsgi 运行,您只需更改或触摸WSGIScriptAlias 指向的 WSGI 脚本。

    touch /home/user/env/app.wsgi
    

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

    【讨论】:

      【解决方案3】:

      如果您在debugger 上运行,则可以使用restart command 重新启动脚本,而无需重新启动整个服务器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-16
        • 2015-11-04
        • 2017-04-25
        • 2019-07-21
        • 2019-05-04
        • 2023-03-30
        • 2022-11-17
        相关资源
        最近更新 更多