lixia625
V2EX  ›  Flask

Apache + Flask + mod_wsgi+阿里云 更改 python 代码后不能立即生效

  •  
  •   lixia625 · Apr 21, 2015 · 6079 views
    This topic created in 4222 days ago, the information mentioned may be changed or developed.

    看上去像是某个地方缓存了代码?
    重启apache也没用,重启服务器后才行。
    第一次部署网站,求教。

    10 replies  •  2015-07-11 17:47:21 +08:00
    lixia625
    lixia625
    OP
    Apr 21, 2015
    1
    额,貌似是apache reload 和 restart的问题?
    firldlove
    firldlove
    Apr 21, 2015
    2
    对apache不太熟,但一般来说应该重启WSGI。WSGI运行python程序,WSGI是server,然后Apache只是反代了一下。所以重启Apache不会有用。
    bravecarrot
    bravecarrot
    Apr 21, 2015 via iPad
    3
    我重启apache就好使呀。
    你改的是什么代码,如果是forms,那你要把变量放在init里才行
    Kilerd
    Kilerd
    Apr 21, 2015
    4
    用 nginx 吧, 用了WSGI 运行 的话,apache 只是一个端口反代,用个轻量级的好一点,Flask 里面 开启了debug模式了吗
    app.run(debug = True)
    facat
    facat
    Apr 21, 2015
    5
    用uwsgi的时候是要重启uwsgi,应该和你的mod_wsgi差不多
    lixia625
    lixia625
    OP
    Apr 22, 2015
    7
    @elvis_w 目测正解
    laoyuan
    laoyuan
    Jul 11, 2015
    8
    修改wsgi 文件,Apache 才会自动reload,所以我的wsgi 文件是这样的(入下)。就是说我就没有app.py 了,每回都修改这个wsgi 文件!

    ```
    import sys
    path = '/usr/www/flask'
    if path not in sys.path:
    sys.path.append(path)

    from flask import Flask
    app = Flask(__name__)
    application = app

    @app.route('/')
    def hello_world():
    return 'Hello World.'

    if __name__ == '__main__':
    app.run(debug = True)
    ```
    laoyuan
    laoyuan
    Jul 11, 2015
    9
    我直接把文件名命名为wsgi.py 了
    WSGIScriptAlias / /usr/www/flask/wsgi.py
    laoyuan
    laoyuan
    Jul 11, 2015
    10
    升级一点:
    import sys, os
    c_path = os.path.abspath(os.path.dirname(__file__))
    if c_path not in sys.path:
    sys.path.append(c_path)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1012 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 18:41 · PVG 02:41 · LAX 10:41 · JFK 13:41
    ♥ Do have faith in what you're doing.