76 lines
2.1 KiB
Python
76 lines
2.1 KiB
Python
import logging
|
|
import sys
|
|
|
|
from settings import PORT
|
|
|
|
|
|
log_settings = {
|
|
'version': 1,
|
|
'disable_existing_loggers': True,
|
|
'formatters': {
|
|
'default': {
|
|
'()': 'uvicorn.logging.DefaultFormatter',
|
|
'fmt': '%(levelprefix)s %(message)s',
|
|
'use_colors': None,
|
|
},
|
|
'access': {
|
|
'()': 'uvicorn.logging.AccessFormatter',
|
|
'fmt': '%(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s',
|
|
},
|
|
},
|
|
'handlers': {
|
|
'default': {
|
|
'formatter': 'default',
|
|
'class': 'logging.StreamHandler',
|
|
'stream': 'ext://sys.stderr',
|
|
},
|
|
'access': {
|
|
'formatter': 'access',
|
|
'class': 'logging.StreamHandler',
|
|
'stream': 'ext://sys.stdout',
|
|
},
|
|
},
|
|
'loggers': {
|
|
'uvicorn': {'handlers': ['default'], 'level': 'INFO'},
|
|
'uvicorn.error': {'level': 'INFO', 'handlers': ['default'], 'propagate': True},
|
|
'uvicorn.access': {'handlers': ['access'], 'level': 'INFO', 'propagate': False},
|
|
},
|
|
}
|
|
|
|
local_headers = [
|
|
('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, HEAD'),
|
|
('Access-Control-Allow-Origin', 'https://localhost:3000'),
|
|
(
|
|
'Access-Control-Allow-Headers',
|
|
'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization',
|
|
),
|
|
('Access-Control-Expose-Headers', 'Content-Length,Content-Range'),
|
|
('Access-Control-Allow-Credentials', 'true'),
|
|
]
|
|
|
|
logger = logging.getLogger('[server] ')
|
|
logger.setLevel(logging.DEBUG)
|
|
|
|
|
|
def exception_handler(_et, exc, _tb):
|
|
logger.error(..., exc_info=(type(exc), exc, exc.__traceback__))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.excepthook = exception_handler
|
|
from granian.constants import Interfaces
|
|
from granian.server import Granian
|
|
|
|
print('[server] started')
|
|
|
|
granian_instance = Granian(
|
|
'main:app',
|
|
address='0.0.0.0', # noqa S104
|
|
port=PORT,
|
|
workers=2,
|
|
threads=2,
|
|
websockets=False,
|
|
interface=Interfaces.ASGI,
|
|
)
|
|
granian_instance.serve()
|