flask socketio - 服务器不重新加载或更新
flask socketio - server does not reload or update
我正在尝试使用 flask-socketio。我 运行 文档中的一个简单示例,它运行良好。我正在使用虚拟环境
app.py
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@socketio.on('message')
def handle_message(message):
print('received message: ' + message)
if __name__ == '__main__':
socketio.run(app, port=8000)
并且在 demo.py
中我使用了 socketio 客户端库
demo.py
from socketIO_client import SocketIO, LoggingNamespace
def on_message_response(*args):
print('on_message_response', args)
with SocketIO('localhost', 8000, LoggingNamespace) as socketIO:
socketIO.emit('message', 'xxx', on_message_response)
socketIO.wait_for_callbacks(seconds=1)
我已经安装了 eventlet
,这个基本示例运行良好。当我 运行 我得到输出
received message: xxx
但是当我更新 app.py
文件和 demo.py
到这个
app.py
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@socketio.on('message')
def handle_message(name, age):
print('We Welcome {} who is {} years old'.format(name,age))
if __name__ == '__main__':
socketio.run(app, port=8000)
demo.py
from socketIO_client import SocketIO, LoggingNamespace
def on_message_response(*args):
print('on_message_response', args)
with SocketIO('localhost', 8000, LoggingNamespace) as socketIO:
socketIO.emit('message', {'name':'Dipanshu', 'age':25}, on_message_response)
socketIO.wait_for_callbacks(seconds=1)
似乎 app.py 没有重新加载或正在更新,因为我一直在收到这个
File "app.py", line 10, in handle_message
print('received message: ' + message) TypeError: must be str, not dict
我已经重新启动了 app.py
几次,但我得到了同样的错误。我也尝试像其他 Flask 应用程序一样使用 Flask 服务器卸载 eventlet
和 运行 它,但它仍然是一样的。
这可能是已编译的 Python 文件的问题。我将给你一些尝试的想法:
我的第一个建议是删除主应用程序目录或任何子目录中的所有 *.pyc
文件和 __pycache__
目录。这将删除所有已编译的 Python 文件,并将强制 Python 重新编译所有内容。
或者,您也可以将两个源文件移动到一个全新的目录,然后 运行 您的服务器和客户端从新目录移动。这也应该清除由于缓存编译的 Python 文件引起的任何问题。
希望对您有所帮助!
我正在尝试使用 flask-socketio。我 运行 文档中的一个简单示例,它运行良好。我正在使用虚拟环境
app.py
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@socketio.on('message')
def handle_message(message):
print('received message: ' + message)
if __name__ == '__main__':
socketio.run(app, port=8000)
并且在 demo.py
中我使用了 socketio 客户端库
demo.py
from socketIO_client import SocketIO, LoggingNamespace
def on_message_response(*args):
print('on_message_response', args)
with SocketIO('localhost', 8000, LoggingNamespace) as socketIO:
socketIO.emit('message', 'xxx', on_message_response)
socketIO.wait_for_callbacks(seconds=1)
我已经安装了 eventlet
,这个基本示例运行良好。当我 运行 我得到输出
received message: xxx
但是当我更新 app.py
文件和 demo.py
到这个
app.py
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@socketio.on('message')
def handle_message(name, age):
print('We Welcome {} who is {} years old'.format(name,age))
if __name__ == '__main__':
socketio.run(app, port=8000)
demo.py
from socketIO_client import SocketIO, LoggingNamespace
def on_message_response(*args):
print('on_message_response', args)
with SocketIO('localhost', 8000, LoggingNamespace) as socketIO:
socketIO.emit('message', {'name':'Dipanshu', 'age':25}, on_message_response)
socketIO.wait_for_callbacks(seconds=1)
似乎 app.py 没有重新加载或正在更新,因为我一直在收到这个
File "app.py", line 10, in handle_message print('received message: ' + message) TypeError: must be str, not dict
我已经重新启动了 app.py
几次,但我得到了同样的错误。我也尝试像其他 Flask 应用程序一样使用 Flask 服务器卸载 eventlet
和 运行 它,但它仍然是一样的。
这可能是已编译的 Python 文件的问题。我将给你一些尝试的想法:
我的第一个建议是删除主应用程序目录或任何子目录中的所有
*.pyc
文件和__pycache__
目录。这将删除所有已编译的 Python 文件,并将强制 Python 重新编译所有内容。或者,您也可以将两个源文件移动到一个全新的目录,然后 运行 您的服务器和客户端从新目录移动。这也应该清除由于缓存编译的 Python 文件引起的任何问题。
希望对您有所帮助!