Flask-RESTful 与 Flask-SocketIO

问题描述 投票:0回答:1

我在使用 Flask-SocketIO 实现 Flask-RESTful 应用程序时遇到问题。有什么想法如何配置两者吗?这是我的代码:

from decouple import config
from flask import Flask
from flask_cors import CORS
from flask_migrate import Migrate
from flask_restful import Api

from db import db
from resources.routes import routes


class DevApplicationConfiguration:
    DEBUG = True
    TESTING = True
    SQLALCHEMY_DATABASE_URI = (
        f"postgresql://{config('DB_USER')}:{config('DB_PASSWORD')}"
        f"@{config('DB_HOST')}/{config('DB_NAME')}"
    )


def create_app(config="config.DevApplicationConfiguration"):
    app = Flask(__name__)
    app.config.from_object(DevApplicationConfiguration)
    migrate = Migrate(app, db)
    CORS(app)
    api = Api(app)
    [api.add_resource(*r) for r in routes]
    return app

python flask-socketio python-socketio
1个回答
0
投票

实际上那天我可以看到我的大脑得到了stackoverflow..在重新审视代码之后,我能够一起实现Flask-RESTful和Flask-SocketIO。这是代码:

主.py

from config import create_app
from db import db
from flask import request


app, socketio = create_app()
app.config["INITIALIZED"] = False 

db.init_app(app)

@socketio.on('user_id')
def user_id(data):
    print(f"User {data} have been connected")
    print(request.sid)


@app.before_request
def init_request():
    if not app.config["INITIALIZED"]:
        db.create_all()
        app.config['INITIALIZED'] = True


if __name__ == "__main__":
    socketio.run(app)

配置.py:

from decouple import config
from flask import Flask
from flask_cors import CORS
from flask_migrate import Migrate
from flask_restful import Api
from flask_socketio import SocketIO

from db import db
from resources.routes import routes


class DevApplicationConfiguration:
    DEBUG = True
    TESTING = True
    SQLALCHEMY_DATABASE_URI = (
        f"postgresql://{config('DB_USER')}:{config('DB_PASSWORD')}"
        f"@{config('DB_HOST')}/{config('DB_NAME')}"
    )
    SECRET_KEY = "secret!"


def create_app(config="config.DevApplicationConfiguration"):
    app = Flask(__name__)
    app.config.from_object(DevApplicationConfiguration)
    migrate = Migrate(app, db)
    CORS(app)
    api = Api(app)
    [api.add_resource(*r) for r in routes]
    socketioapp = SocketIO(app, cors_allowed_origins='*')
    return app, socketioapp
© www.soinside.com 2019 - 2024. All rights reserved.