我试图同时使用Flask Restful和Flask SocketIO。我已经制作了Flask Restful应用程序,但现在我想使用Flask SocketIO在客户端和我的服务器之间进行实时通信。
from flask import Flask
from flask_restful import Api
from flask_socketio import SocketIO
app = Flask(__name__)
api = Api(app)
socketio = SocketIO()
if __name__ == '__main__':
socketio.run(app, port=5000, host='0.0.0.0')
app.run(port=5000, host='0.0.0.0')
一旦我运行了这个,我就得到了
Traceback (most recent call last):
File "app.py", line 10, in <module>
socketio.run(app, port=5000, host='0.0.0.0')
File "C:\Python27\lib\site-packages\flask_socketio\__init__.py", line 475, in run
if self.server.eio.async_mode == 'threading':
AttributeError: 'NoneType' object has no attribute 'eio'
我是使用Flask进行编码的初学者。希望你能帮助我。感谢。
答案 0 :(得分:3)
Flask-Restful不会改变您启动服务器的方式。你可以这样做:
app = Flask(__name__)
api = Api(app)
socketio = SocketIO(app)
if __name__ == '__main__':
socketio.run(app, port=5000, host='0.0.0.0')
您在问题中粘贴的代码有一个导致AttributeError
的错误,那就是您没有将app
实例传递给SocketIO
构造函数。
答案 1 :(得分:0)
我认为您应该考虑使用外部提供程序来实现实时功能。查看PushRadar的Python库(https://www.pushradar.com/docs/latest/python)。虽然它是付费服务,但它不需要运行websocket服务器,并提供一些有用的功能,如用户定位。
免责声明:我是PushRadar的创始人