2015-04-19 3 views
3

Я пытаюсь интегрировать Flask-SocketIO с моим флеш-приложением.Ошибки интеграции с флягой и флажком-SocketIO

По какой-то причине я получаю ошибку импорта, которая вызвана from .. import socketio, что у меня есть в моих event.py, и я не знаю, почему.

Я был бы очень признателен за предоставленную помощь.

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 

Главный/____ init____.py

from flask import Blueprint 

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

главную/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}) 

ответ

3

Переименовать main/____init____.py в main/__init__.py и вы можете сделать:

from . import socketio 

если socketio определяется в __init__.py, как вы сказали. Тем не менее, это выглядит, как это определено в factory.py, в этом случае вы могли бы сделать:

from ..factory import socketio 
+0

Ok Должно быть, я напечатал один ко многим _, когда я вступал имя моего файла инициализации на SO. – user982599

Смежные вопросы