THIS PROJECT IS ONLY FOR EDUCATIONAL PURPOSES. DO NOT USE IT FOR COMMERCIAL PURPOSES.
This project is a Python-based web application with a framework of video player's backend that uses FastAPI for the backend. It includes health checks for Redis and MySQL, middleware for processing time, and session management. The application is containerized using Docker.
- FastAPI backend
- Health checks for Redis and MySQL
- Middleware for processing time
- Session management
- CORS support
- GZip compression
- Python 3.12.4
- Docker
- Redis
- MySQL
-
Install Python 3.12.4:
sudo apt update sudo apt install python3.12
-
Install Docker:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
-
Clone the repository:
git clone https://github.com/binaryYuki/oleapi.git cd oleapi.git
-
Build the Docker image:
docker build --build-arg COMMIT_ID=$(git rev-parse HEAD) --build-arg BUILD_AT=$(date -u +"%Y-%m-%dT%H:%M:%SZ") -t oleapi:latest .
-
Run the Docker container:
docker run -p 8000:8000 -e SESSION_SECRET=$(python -c 'import binascii, os; print(binascii.hexlify(os.urandom(16)).decode()') oleapi:latest
-
Clone the repository:
git clone https://github.com/binaryYuki/oleapi.git cd oleapi
-
Create a virtual environment and activate it:
python -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate`
-
Install the dependencies:
pip install -r requirements.txt
-
Set environment variables:
export COMMIT_ID=$(git rev-parse HEAD) export BUILD_AT=$(date -u +"%Y-%m-%dT%H:%M:%SZ") export SESSION_SECRET=$(python -c 'import binascii, os; print(binascii.hexlify(os.urandom(16)).decode())')
-
Run the application:
uvicorn app:app --host 0.0.0.0 --port 8000
- GET
/healthz
- Checks the status of Redis and MySQL connections.
- Response:
{ "status": "ok", "redis": true, "mysql": true, "live_servers": [] }
- Process Time Header: Adds the processing time to the response headers.
- Session Middleware: Manages user sessions.
- Trusted Host Middleware: Allows requests from all hosts.
- GZip Middleware: Compresses responses larger than 1000 bytes.
- CORS Middleware: Configures CORS settings based on the environment.
COMMIT_ID
: The current commit ID.BUILD_AT
: The build timestamp.SESSION_SECRET
: The secret key for session management.DEBUG
: Set totrue
orfalse
to enable or disable debug mode.
This project is licensed under the MIT License. See the LICENSE
file for more details.