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

时间:2018-01-06 15:35:00

标签: python flask flask-socketio

我试图使用烧瓶 - 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应用程序一样运行它,但它仍然是相同的。

1 个答案:

答案 0 :(得分:0)

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

  • 我的第一个建议是删除主应用程序目录或任何子目录中的所有*.pyc个文件和__pycache__目录。这将删除所有已编译的Python文件,并将强制Python重新编译所有内容。

  • 或者,您也可以获取两个源文件并将它们移动到一个全新的目录,然后从新目录运行您的服务器和客户端。这也应该清除由于编译的Python文件的缓存引起的任何问题。

希望这有帮助!