我在使用 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
实际上那天我可以看到我的大脑得到了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