forked from sh-edraft.de/sh_discord_bot
Added api connection check #70
This commit is contained in:
@@ -24,7 +24,9 @@
|
||||
"Flask-Classful==0.14.2",
|
||||
"Flask-Cors==3.0.10",
|
||||
"PyJWT==2.5.0",
|
||||
"waitress==2.1.2"
|
||||
"waitress==2.1.2",
|
||||
"Flask-SocketIO==5.3.1",
|
||||
"eventlet==0.33.1"
|
||||
],
|
||||
"DevDependencies": [
|
||||
"cpl-cli==2022.10.0"
|
||||
|
@@ -3,11 +3,15 @@ import sys
|
||||
import uuid
|
||||
from functools import partial
|
||||
|
||||
import eventlet
|
||||
from cpl_core.dependency_injection import ServiceProviderABC
|
||||
from eventlet import wsgi
|
||||
from flask import Flask, request, jsonify, Response, make_response
|
||||
from flask_cors import CORS
|
||||
from flask_socketio import SocketIO
|
||||
|
||||
from bot_api.configuration.api_settings import ApiSettings
|
||||
from bot_api.configuration.frontend_settings import FrontendSettings
|
||||
from bot_api.exception.service_exception import ServiceException
|
||||
from bot_api.logging.api_logger import ApiLogger
|
||||
from bot_api.model.error_dto import ErrorDTO
|
||||
@@ -21,6 +25,7 @@ class Api(Flask):
|
||||
logger: ApiLogger,
|
||||
services: ServiceProviderABC,
|
||||
api_settings: ApiSettings,
|
||||
frontend_settings: FrontendSettings,
|
||||
*args, **kwargs
|
||||
):
|
||||
if not args:
|
||||
@@ -39,6 +44,11 @@ class Api(Flask):
|
||||
exc_class, code = self._get_exc_class_and_code(Exception)
|
||||
self.error_handler_spec[None][code][exc_class] = self.handle_exception
|
||||
|
||||
# websockets
|
||||
self._socketio = SocketIO(self, cors_allowed_origins='*')
|
||||
self._socketio.on_event('connect', self.on_connect)
|
||||
self._socketio.on_event('disconnect', self.on_disconnect)
|
||||
|
||||
def _register_routes(self):
|
||||
for path, f in Route.registered_routes.items():
|
||||
route = f[0]
|
||||
@@ -76,6 +86,17 @@ class Api(Flask):
|
||||
def start(self):
|
||||
self._logger.info(__name__, f'Starting API {self._apt_settings.host}:{self._apt_settings.port}')
|
||||
self._register_routes()
|
||||
from waitress import serve
|
||||
# from waitress import serve
|
||||
# https://docs.pylonsproject.org/projects/waitress/en/stable/arguments.html
|
||||
serve(self, host=self._apt_settings.host, port=self._apt_settings.port, threads=10, connection_limit=1000, channel_timeout=10)
|
||||
# serve(self, host=self._apt_settings.host, port=self._apt_settings.port, threads=10, connection_limit=1000, channel_timeout=10)
|
||||
wsgi.server(
|
||||
eventlet.listen((self._apt_settings.host, self._apt_settings.port)),
|
||||
self,
|
||||
log_output=False
|
||||
)
|
||||
|
||||
def on_connect(self):
|
||||
self._logger.info(__name__, f'Client connected')
|
||||
|
||||
def on_disconnect(self):
|
||||
self._logger.info(__name__, f'Client disconnected')
|
||||
|
Reference in New Issue
Block a user