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 文件引起的任何问题。

希望对您有所帮助!