【问题标题】:Nginx, uWSGI, Flask app doesn't show changes until the server is restartedNginx、uWSGI、Flask 应用程序在服务器重新启动之前不会显示更改
【发布时间】:2017-04-02 14:14:25
【问题描述】:

每次我更新我的 Python 文件时,我都必须重新启动服务器才能看到更改。我试过重启 Nginx 和 uWSGI,但没有成功。 Flask 正在调试模式下运行。如何在不重新启动整个服务器的情况下查看更改?

app.py

from flask import Flask
import time
import cv2

app = Flask(__name__)

@app.route("/")
def main():
   return "Hello cob at " + time.time().__str__() + "\n"

if __name__ == "__main__":
    app.run(debug=True)

uwsgi.ini

[uwsgi]
socket = :9090
plugin = python
wsgi-file = /home/vagrant/PythonVision/app.py
process = 3
callable = app

nginx.conf

server {
  location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:9090;
  }
}

我正在使用以下步骤对此进行测试:

  • 将返回消息从“Hello cob”更改为“hello bob”,保存文件
  • 在浏览器中刷新页面(清除浏览器缓存)无变化
  • 执行 sudo service uwsgi restart, sudo service nginx restart
  • 在浏览器中刷新页面(清除浏览器缓存)无变化

【问题讨论】:

  • 我怀疑你的 uWSGI 或 nginx 配置有问题。重启 uWSGI 和 nginx 看看有没有错误日志?
  • 如果出现问题,为什么重启会在右侧显示 ok 作为状态?另外,它会无法呈现任何内容?
  • 在 vagrant 瞬间更改代码

标签: python nginx flask uwsgi


【解决方案1】:

所以,我解决这个问题的一种方法是在我的 uwsgi.ini 文件中执行此操作

touch-reload = /home/vagrant/PythonVision/app.py

然后我触摸文件 app.py 并 BANG 排序

【讨论】:

    【解决方案2】:

    要在调试模式下实际运行烧瓶应用程序,请运行以下命令:

    python /home/vagrant/PythonVision/app.py

    然后你可以在浏览器上继续:http://ip:5000/

    因为我知道你在 vagrant 上运行它,ip 可能由你的配置定义,但这超出了这个问题的范围。

    【讨论】:

    • 但是如果他们通过一些 WSGI 服务器运行它,它很可能不会更新。在调试模式下运行会自动重新加载新的源文件。
    • sudo 服务 uwsgi 重启?这不是正确的命令吗?我听到那里的某个地方或 .pyc 文件?
    • 我在没有 sudo 的情况下重新启动了服务 uwsgi,但仍然没有更新
    • 当然我已经列出了,最简单的py文件,简单的uwsgi和简单的Nginx文件
    • 对我想做的事情没有帮助
    猜你喜欢
    • 2016-03-10
    • 2019-09-01
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 2012-04-06
    • 2016-12-16
    • 2020-03-19
    • 2011-03-08
    相关资源
    最近更新 更多