A universal CLI launcher for FastAPI applications with daemon mode, logging, and rich UI
Project description
FastAPI Launcher ๐
A universal CLI launcher for FastAPI applications with daemon mode, logging, and rich UI.
ไธไธช้็จ็ FastAPI ๆๅกๅฏๅจๅจ๏ผๆฏๆๅฎๆค่ฟ็จๆจกๅผใๆฅๅฟ็ฎก็ๅ็พๅ็ป็ซฏ่พๅบใ
Features | ็นๆง
- ๐ฅ Hot Reload - Development mode with auto-reload | ๅผๅๆจกๅผ่ชๅจ้่ฝฝ
- ๐ Production Ready - Multi-worker support with uvicorn | ็ไบงๆจกๅผๅค worker ๆฏๆ
- ๐ป Daemon Mode - Background process support (Unix) | ๅฎๆค่ฟ็จๆจกๅผ
- ๐ Rich UI - Beautiful terminal output with Rich | ็พๅ็ป็ซฏ่พๅบ
- โ๏ธ Flexible Config - CLI, ENV, .env, pyproject.toml | ็ตๆดป็้ ็ฝฎ็ณป็ป
- ๐ฅ Health Check - Built-in health monitoring | ๅ ็ฝฎๅฅๅบทๆฃๆฅ
- ๐ Access Logs - Request logging with slow request detection | ่ฏทๆฑๆฅๅฟๅๆ ข่ฏทๆฑๆฃๆต
- ๐ Auto Discovery - Automatically find your FastAPI app | ่ชๅจๅ็ฐ App
Installation | ๅฎ่ฃ
# Using pip
pip install fastapi-launcher
# Using uv
uv add fastapi-launcher
Quick Start | ๅฟซ้ๅผๅง
# Development mode with hot reload
fa dev
# Production mode
fa start --workers 4
# Daemon mode (Unix only)
fa start --daemon
# Check status
fa status
# Stop server
fa stop
# View logs
fa logs --follow
# Health check
fa health
# Show configuration
fa config
# Check dependencies
fa check
Configuration | ้ ็ฝฎ
Configuration Priority | ้ ็ฝฎไผๅ ็บง
- CLI arguments (highest) | CLI ๅๆฐ๏ผๆ้ซ๏ผ
- Environment variables (
FA_prefix) | ็ฏๅขๅ้ .envfile | .env ๆไปถpyproject.toml| pyproject.toml- Default values (lowest) | ้ป่ฎคๅผ๏ผๆไฝ๏ผ
pyproject.toml
[tool.fastapi-launcher]
app = "main:app"
host = "0.0.0.0"
port = 8000
log_level = "info"
# Development mode overrides
[tool.fastapi-launcher.dev]
reload = true
log_level = "debug"
# Production mode overrides
[tool.fastapi-launcher.prod]
workers = 4
log_format = "json"
Environment Variables | ็ฏๅขๅ้
FA_APP=main:app
FA_HOST=0.0.0.0
FA_PORT=8000
FA_RELOAD=true
FA_WORKERS=4
FA_LOG_LEVEL=info
FA_LOG_FORMAT=pretty # or json
FA_DAEMON=false
Commands | ๅฝไปค
fa dev
Start development server with hot reload.
fa dev # Auto-discover app
fa dev --app main:app # Specify app
fa dev --port 9000 # Custom port
fa dev --no-reload # Disable reload
fa dev --reload-dirs src,lib # Watch specific dirs
fa start
Start production server.
fa start # Default 4 workers
fa start --workers 8 # 8 workers
fa start --daemon # Background mode
fa start --host 0.0.0.0 # Bind to all interfaces
fa stop
Stop running server.
fa stop # Graceful shutdown
fa stop --force # Force kill
fa stop --timeout 30 # Custom timeout
fa restart
Restart server.
fa restart # Stop + Start
fa restart --timeout 10 # Custom stop timeout
fa status
Show server status.
fa status
# Output:
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# โ Server Status โ
# โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโค
# โ Status โ โ Running โ
# โ PID โ 12345 โ
# โ URL โ http://...:8000 โ
# โ Uptime โ 2h 30m 15s โ
# โ Memory โ 128.5 MB โ
# โโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโ
fa logs
View server logs.
fa logs # Last 100 lines
fa logs -n 50 # Last 50 lines
fa logs --follow # Tail mode
fa logs --type access # Access logs
fa logs --type error # Error logs
fa health
Check server health.
fa health # Default endpoint
fa health --path /ready # Custom endpoint
fa health --timeout 10 # Custom timeout
fa config
Show current configuration.
fa config
# Output shows merged config from all sources
fa check
Check dependencies and configuration.
fa check
# โ FastAPI is installed
# โ uvicorn is installed
# โ Configuration is valid
# โ App path is valid: main:app
fa clean
Clean runtime files.
fa clean # Interactive
fa clean --yes # Skip confirmation
fa clean --logs # Only log files
Project Structure | ้กน็ฎ็ปๆ
After running fa start, a runtime directory is created:
your-project/
โโโ pyproject.toml
โโโ main.py
โโโ runtime/
โโโ fa.pid # PID file
โโโ logs/
โโโ fa.log # Application log
โโโ access.log # Request log
โโโ error.log # Error log
App Auto-Discovery | ่ชๅจๅ็ฐ
FastAPI Launcher will look for your app in these locations:
main.pyโmain:appapp.pyโapp:appapi.pyโapi:appserver.pyโserver:appsrc/main.pyโsrc.main:app
Supported variable names: app, application, api
License | ่ฎธๅฏ่ฏ
MIT License
Contributing | ่ดก็ฎ
Contributions are welcome! Please feel free to submit issues and pull requests.
ๆฌข่ฟ่ดก็ฎ๏ผ่ฏท้ๆถๆไบค issues ๅ pull requestsใ
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fastapi_launcher-0.1.0.tar.gz.
File metadata
- Download URL: fastapi_launcher-0.1.0.tar.gz
- Upload date:
- Size: 25.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
00d3a4669b0d52d3daa6575e2936eddb78292dcae828ea9c22ca4f31500dbe02
|
|
| MD5 |
79ec6649a57767731307388f655dcfad
|
|
| BLAKE2b-256 |
eb35dd4ad218130b83fba80f567ab6a1366b3a9dfd99357610047e8213a7c2ad
|
File details
Details for the file fastapi_launcher-0.1.0-py3-none-any.whl.
File metadata
- Download URL: fastapi_launcher-0.1.0-py3-none-any.whl
- Upload date:
- Size: 33.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9599925fc1595193b039c1183876b57ec22ca7a209e6c6f0ab468d3aa87fdbf
|
|
| MD5 |
bb3029c39706d4202d4398652d091718
|
|
| BLAKE2b-256 |
2f5864de2c068a04344199765609952377690ad82420661c2b40ed51c9295354
|