2015-04-19 3 views
3

J'essaie d'intégrer Flask-SocketIO avec mon application Flask.Flask et Flask-SocketIO erreurs d'intégration et d'importation

Pour une raison que j'obtiens une erreur d'importation qui est déclenchée par le from .. import socketio que j'ai dans mon events.py et je ne sais pas pourquoi.

J'apprécierais grandement toute aide fournie.

app.py

from factory import create_app 
app = create_app() 

factory.py

from flask import Flask 
from flask.ext.socketio import SocketIO 
from flask.ext.login import LoginManager 
import os 
from celery import Celery 

lm = LoginManager() 
socketio = SocketIO() 
lm.login_view = 'main.login' 
lm.session_protection = 'strong' 


def create_app(): 
    app = Flask(__name__) 
    app.config.from_object(os.environ.get('APP_CONFIG')) # export APP_CONFIG=settings.Development 
    lm.init_app(app) 

    from project.main import main as main_blueprint 

    app.register_blueprint(main_blueprint) 
    socketio.init_app(app) 

    return app 

main/____ init____.py

from flask import Blueprint 

main = Blueprint('main', __name__) 
import views, events 

main/events.py

# from __future__ import absolute_import 
from uuid import uuid4 
from flask import current_app, session, request 
from flask.ext.socketio import emit, disconnect 
from .. import socketio 

@socketio.on('status', namespace='/events') 
def events_message(message): 
    print 'socketio.on: status' 
    emit('status', {'status': message['status']}) 


@socketio.on('disconnect request', namespace='/events') 
def disconnect_request(): 
    print 'socketio.on: disconnect request' 
    emit('status', {'status': 'Disconnected!'}) 
    disconnect() 


@socketio.on('connect', namespace='/events') 
def events_connect(): 
    print 'socketio.on: connect' 
    websocket_id = str(uuid4()) 
    session['websocket_id'] = websocket_id 
    current_app.clients[websocket_id] = request.namespace 
    emit('websocket_id', {'websocket_id': websocket_id}) 

Répondre

3

Renommer main/____init____.py-main/__init__.py et vous pouvez faire:

from . import socketio 

si socketio est défini dans __init__.py comme vous avez dit. Cependant, on dirait qu'il est défini dans factory.py, dans ce cas, vous feriez:

from ..factory import socketio 
+0

Ok je dactylographiées dű un à plusieurs _ quand j'entrais le nom de mon fichier init sur le SO. – user982599