2017-09-09 17 views
1

Ich versuche, Flask Restful und Flask SocketIO gleichzeitig zu verwenden. Ich habe bereits eine Flask Restful Anwendung gemacht, aber jetzt möchte ich Flask SocketIO verwenden, um eine Echtzeitkommunikation zwischen dem Client und meinem Server zu haben.Flask Restful und Flask SocketIO Server laufen zusammen

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') 

Sobald ich dieses laufen lasse, erhalte ich

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' 

Ich bin ein Anfänger mit Flask in Codierung. Hoffe, du könntest mir helfen. Vielen Dank.

Antwort

0

Flask-Restful etwas in Bezug nicht ändern, wie Sie Ihren Server starten. Sie tun können:

app = Flask(__name__) 
api = Api(app) 
socketio = SocketIO(app) 

if __name__ == '__main__': 
    socketio.run(app, port=5000, host='0.0.0.0') 

Der Code, den Sie in Ihrer Frage kleben einen Fehler hatte, die die AttributeError verursacht wurde, und das war, dass man nicht die app Instanz mit dem SocketIO Konstruktor wurde übergeben.

0

Ich denke, Sie sollten in Betracht ziehen, einen externen Anbieter für Echtzeit-Funktionalität zu verwenden. Überprüfen Sie die Python-Bibliothek von PushRadar (https://www.pushradar.com/docs/latest/python). Obwohl es sich um einen kostenpflichtigen Dienst handelt, müssen Sie den Websocket-Server nicht mehr ausführen und bieten einige nützliche Funktionen wie z.

Disclaimer: Ich bin der Gründer von PushRadar