【发布时间】:2017-01-14 18:13:31
【问题描述】:
我正在使用烧瓶 socketio 进行网络套接字项目,并使用烧瓶 blueprint 拆分视图。问题是 socketIO 工作不正常并且出现以下错误:
/flask_socketio/__init__.py", line 31, in __init__
flask_app.wsgi_app,
AttributeError: 'Blueprint' object has no attribute 'wsgi_app'
我的项目结构如下:
|-- App
| |-- __init__.py
| |-- app.py
| |-- templates
| | |-- main.html
| | |-- pymeetups.html
| -- views
| |-- __init__.py
| | --- test.py
|-- __init__.py
|-- run.py
运行.py:
from gevent import monkey
from flask import Flask, render_template, request
from flask_socketio import SocketIO
monkey.patch_all()
from App.views import test
app = Flask(__name__, template_folder='app/templates')
app.register_blueprint(test.app)
socketio = SocketIO(app)
if __name__ == '__main__':
socketio.run(app, "0.0.0.0", port=80)
test.py:
from flask import Blueprint, render_template, Flask
from flask_socketio import SocketIO
app = Blueprint('app', __name__)
socketio = SocketIO(app)
@app.route('/')
def main():
return render_template('main.html')
@socketio.on('connect', namespace='/dd')
def ws_conn():
print("connect")
socketio.emit('msg', {'count': 1}, namespace='/dd')
@socketio.on('disconnect', namespace="/dd")
def ws_disconn():
print("disconnect")
问题来自 test.py 文件中的语句:
app = Blueprint('app', __name__)
socketio = SocketIO(app)
如果不使用烧瓶蓝图并将所有内容合并到一个文件中,它可以完美运行:
app.py:
from gevent import monkey
from flask import Flask, render_template, request
from flask_socketio import SocketIO
monkey.patch_all()
app = Flask(__name__)
socketio = SocketIO(app)
@app.route('/')
def main():
return render_template('main.html')
@socketio.on('connect', namespace='/dd')
def ws_conn():
socketio.emit('msg', {'count': 1}, namespace='/dd')
@socketio.on('disconnect', namespace='/dd')
def ws_disconn():
print("Disconnected")
if __name__ == '__main__':
socketio.run(app, "0.0.0.0", port=80)
如果我希望我的应用程序有很多功能并且很难将所有功能管理到一个文件中,我该如何拆分路由?
【问题讨论】:
标签: python-3.x flask flask-socketio