mirror of
https://github.com/karma-riuk/crab-webapp.git
synced 2025-07-05 22:18:13 +02:00
57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
# server.py
|
|
from flask import Flask
|
|
from flask_cors import CORS
|
|
from flask_socketio import SocketIO
|
|
from routes.index import router as index_router
|
|
from routes.answers import router as answers_router
|
|
from routes.datasets import router as datasets_router
|
|
from werkzeug.exceptions import HTTPException
|
|
import os
|
|
|
|
app = Flask(__name__, static_folder='../public', static_url_path='/')
|
|
CORS(app)
|
|
|
|
# Register routes
|
|
app.register_blueprint(index_router) # serves '/' and '/api/hello'
|
|
app.register_blueprint(answers_router) # mounts at '/answers'
|
|
app.register_blueprint(datasets_router) # mounts at '/datasets'
|
|
|
|
|
|
@app.errorhandler(Exception)
|
|
def handle_exception(e):
|
|
if isinstance(e, HTTPException):
|
|
response = {
|
|
"error": e.name.lower().replace(" ", "_"), # e.g. "not_found"
|
|
"message": e.description,
|
|
}
|
|
return app.json.response(response), e.code or 500
|
|
|
|
app.logger.exception(e)
|
|
return (
|
|
app.json.response({"error": "internal_server_error", "message": str(e)}),
|
|
500,
|
|
)
|
|
|
|
|
|
def init_socketio(app):
|
|
socketio = SocketIO(app, cors_allowed_origins='*')
|
|
|
|
@socketio.on('connect')
|
|
def _():
|
|
print('Websocket client connected')
|
|
|
|
return socketio
|
|
|
|
|
|
# Init socketio
|
|
socketio = init_socketio(app)
|
|
|
|
if __name__ == '__main__':
|
|
port = int(os.getenv('PORT', 45003))
|
|
socketio.run(
|
|
app,
|
|
use_reloader=True,
|
|
host="0.0.0.0",
|
|
port=port,
|
|
)
|