flask socketio - 服务器不重新加载或更新

问题描述 投票:0回答:1

我正在尝试使用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重新加载或正在更新,因为我一直得到这个

文件“app.py”,第10行,在handle_message中打印('收到消息:'+消息)TypeError:必须是str,而不是dict

我已经重启app.py几次,但我得到了同样的错误。我也尝试卸载eventlet并使用Flask服务器像其他Flask应用程序一样运行它,但它仍然是相同的。

python flask flask-socketio
1个回答
0
投票

这可能是编译的Python文件的问题。我想给你一些尝试的想法:

  • 我的第一个建议是删除主应用程序目录或任何子目录中的所有*.pyc文件和__pycache__目录。这将删除所有已编译的Python文件,并将强制Python重新编译所有内容。
  • 或者,您也可以获取两个源文件并将它们移动到一个全新的目录,然后从新目录运行您的服务器和客户端。这也应该清除由于编译的Python文件的缓存导致的任何问题。

希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.