Flask Socket IO 服务器未检测到更改
Flask Socket IO server not detecting changes
在我保存文件后,服务器似乎没有检测到对 application.py 文件所做的更改,即使调试模式已打开。我能够看到更改的唯一方法是退出服务器并使用 flask run
重新启动
这是 application.py 的代码:
import os
import requests
from flask import Flask, session, render_template, request, url_for, flash, redirect, jsonify
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config["SECRET_KEY"] = 'secret!'
socketio = SocketIO(app)
@app.route("/")
def index():
print('hello world')
return 'hello!'
if __name__ == '__main__':
socketio.run(app, debug=True)
这是命令 line/terminal:
λ flask run
* Serving Flask-SocketIO app "application.py"
* Forcing debug mode on
* Restarting with stat
* Debugger is active!
* Debugger PIN: 156-884-244
(3824) wsgi starting up on http://127.0.0.1:5000
(3824) accepted ('127.0.0.1', 50569)
127.0.0.1 - - [10/Sep/2018 20:07:40] "GET /socket.io/?EIO=3&transport=polling&t=1536624459432-5 HTTP/1.1" 200 381 0.000000
(3824) accepted ('127.0.0.1', 50571)
127.0.0.1 - - [10/Sep/2018 20:07:40] "GET /socket.io/?EIO=3&transport=polling&t=1536624460314-6&sid=79eb8e587f664e3383c946bb046717ca HTTP/1.1" 200 215 0.000000
(3824) accepted ('127.0.0.1', 50568)
127.0.0.1 - - [10/Sep/2018 20:07:44] "GET /socket.io/?EIO=3&transport=websocket&sid=79eb8e587f664e3383c946bb046717ca HTTP/1.1" 200 0 4.610168
hello world
127.0.0.1 - - [10/Sep/2018 20:07:44] "GET / HTTP/1.1" 200 152 0.000000
hello world
127.0.0.1 - - [10/Sep/2018 20:07:58] "GET / HTTP/1.1" 200 152 0.000000
hello world
127.0.0.1 - - [10/Sep/2018 20:08:06] "GET / HTTP/1.1" 200 152 0.000000
wsgi exiting
(3824) wsgi exited, is_accepting=True
每次我更改 print('hello world')
中的文本并刷新浏览器时,hello world
的命令都会出现。无论我将其更改为什么,我总是得到代码打印参数的原始版本。
我注意到的几件事:
- 当我只是 运行 Flask 时,不会出现此问题。当我只是 运行 Flask 时,我在命令 line/terminal 中看到检测到更改。
- 如果我 return 一个 HTML 文件的模板,对 HTML 文件的更改会自动更新。
嗯。看起来重新加载器无法通过 flask run
与您一起使用 运行 应用程序。但是,当您通过 运行 应用程序文件(即 python application.py
)运行 时,它确实有效。
我会记录错误并进行调查。
在我保存文件后,服务器似乎没有检测到对 application.py 文件所做的更改,即使调试模式已打开。我能够看到更改的唯一方法是退出服务器并使用 flask run
这是 application.py 的代码:
import os
import requests
from flask import Flask, session, render_template, request, url_for, flash, redirect, jsonify
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config["SECRET_KEY"] = 'secret!'
socketio = SocketIO(app)
@app.route("/")
def index():
print('hello world')
return 'hello!'
if __name__ == '__main__':
socketio.run(app, debug=True)
这是命令 line/terminal:
λ flask run
* Serving Flask-SocketIO app "application.py"
* Forcing debug mode on
* Restarting with stat
* Debugger is active!
* Debugger PIN: 156-884-244
(3824) wsgi starting up on http://127.0.0.1:5000
(3824) accepted ('127.0.0.1', 50569)
127.0.0.1 - - [10/Sep/2018 20:07:40] "GET /socket.io/?EIO=3&transport=polling&t=1536624459432-5 HTTP/1.1" 200 381 0.000000
(3824) accepted ('127.0.0.1', 50571)
127.0.0.1 - - [10/Sep/2018 20:07:40] "GET /socket.io/?EIO=3&transport=polling&t=1536624460314-6&sid=79eb8e587f664e3383c946bb046717ca HTTP/1.1" 200 215 0.000000
(3824) accepted ('127.0.0.1', 50568)
127.0.0.1 - - [10/Sep/2018 20:07:44] "GET /socket.io/?EIO=3&transport=websocket&sid=79eb8e587f664e3383c946bb046717ca HTTP/1.1" 200 0 4.610168
hello world
127.0.0.1 - - [10/Sep/2018 20:07:44] "GET / HTTP/1.1" 200 152 0.000000
hello world
127.0.0.1 - - [10/Sep/2018 20:07:58] "GET / HTTP/1.1" 200 152 0.000000
hello world
127.0.0.1 - - [10/Sep/2018 20:08:06] "GET / HTTP/1.1" 200 152 0.000000
wsgi exiting
(3824) wsgi exited, is_accepting=True
每次我更改 print('hello world')
中的文本并刷新浏览器时,hello world
的命令都会出现。无论我将其更改为什么,我总是得到代码打印参数的原始版本。
我注意到的几件事:
- 当我只是 运行 Flask 时,不会出现此问题。当我只是 运行 Flask 时,我在命令 line/terminal 中看到检测到更改。
- 如果我 return 一个 HTML 文件的模板,对 HTML 文件的更改会自动更新。
嗯。看起来重新加载器无法通过 flask run
与您一起使用 运行 应用程序。但是,当您通过 运行 应用程序文件(即 python application.py
)运行 时,它确实有效。
我会记录错误并进行调查。