2017-09-09 3 views
1

J'essaie d'utiliser Flask Restful et Flask SocketIO en même temps. J'ai déjà fait une application Flask Restful mais maintenant je veux utiliser Flask SocketIO pour avoir une communication en temps réel entre le client et mon serveur.Flask Repos et flacon SocketIO serveur run

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

Une fois que je cours, j'obtenir

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' 

Je suis un débutant dans le codage avec Flask. J'espère que tu pourrais m'aider. Merci.

Répondre

0

-Flask Restful ne change rien en ce qui concerne la façon dont vous démarrez votre serveur. Vous pouvez faire:

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

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

Le code que vous avez collé dans votre question avait un bug qui faisait l'AttributeError, et qui était que vous ne transmettaient pas le app par exemple au constructeur SocketIO.

0

Je pense que vous devriez envisager d'utiliser un fournisseur externe pour la fonctionnalité en temps réel. Découvrez la bibliothèque Python de PushRadar (https://www.pushradar.com/docs/latest/python). Bien qu'il s'agisse d'un service payant, il supprime le besoin d'exécuter le serveur Websocket et offre certaines fonctionnalités utiles, telles que le ciblage des utilisateurs.

Disclaimer: Je suis le fondateur de PushRadar