adding run.py
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Run script for Mini SpecsComply Pro.
|
||||
This script initializes and runs the application.
|
||||
"""
|
||||
|
||||
import os
|
||||
import uvicorn
|
||||
import argparse
|
||||
from dotenv import load_dotenv
|
||||
from loguru import logger
|
||||
import sys
|
||||
|
||||
# Load environment variables from .env file
|
||||
load_dotenv()
|
||||
|
||||
def check_api_keys():
|
||||
"""Check if required API keys are set."""
|
||||
missing_keys = []
|
||||
|
||||
# Check required API keys
|
||||
if not os.getenv("COHERE_API_KEY"):
|
||||
missing_keys.append("COHERE_API_KEY")
|
||||
|
||||
if not os.getenv("GROQ_API_KEY"):
|
||||
missing_keys.append("GROQ_API_KEY")
|
||||
|
||||
# Check vector database keys
|
||||
vector_db = os.getenv("VECTOR_DB", "pinecone").lower()
|
||||
|
||||
if vector_db == "pinecone":
|
||||
if not os.getenv("PINECONE_API_KEY"):
|
||||
missing_keys.append("PINECONE_API_KEY")
|
||||
if not os.getenv("PINECONE_ENVIRONMENT"):
|
||||
missing_keys.append("PINECONE_ENVIRONMENT")
|
||||
|
||||
if vector_db == "weaviate":
|
||||
if not os.getenv("WEAVIATE_URL"):
|
||||
missing_keys.append("WEAVIATE_URL")
|
||||
|
||||
return missing_keys
|
||||
|
||||
def main():
|
||||
"""Run the application."""
|
||||
# Parse command-line arguments
|
||||
parser = argparse.ArgumentParser(description="Run Mini SpecsComply Pro API")
|
||||
parser.add_argument("--host", default="0.0.0.0", help="Host to bind")
|
||||
parser.add_argument("--port", type=int, default=8000, help="Port to bind")
|
||||
parser.add_argument("--reload", action="store_true", help="Enable auto-reload")
|
||||
parser.add_argument("--debug", action="store_true", help="Enable debug mode")
|
||||
args = parser.parse_args()
|
||||
|
||||
# Configure logging
|
||||
log_level = "DEBUG" if args.debug else "INFO"
|
||||
logger.remove()
|
||||
logger.add(
|
||||
sys.stdout,
|
||||
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}",
|
||||
level=log_level,
|
||||
)
|
||||
|
||||
# Check API keys
|
||||
missing_keys = check_api_keys()
|
||||
if missing_keys:
|
||||
logger.warning(f"Missing API keys: {', '.join(missing_keys)}")
|
||||
logger.warning("Some functionality may not work properly.")
|
||||
logger.warning("Please check your .env file and ensure all required API keys are set.")
|
||||
|
||||
# If critical keys are missing, exit
|
||||
critical_keys = ["COHERE_API_KEY", "GROQ_API_KEY"]
|
||||
if any(key in critical_keys for key in missing_keys):
|
||||
logger.error("Critical API keys are missing. Application cannot start.")
|
||||
sys.exit(1)
|
||||
|
||||
logger.info(f"Starting Mini SpecsComply Pro on {args.host}:{args.port}")
|
||||
|
||||
# Run the application
|
||||
uvicorn.run(
|
||||
"app.main:app",
|
||||
host=args.host,
|
||||
port=args.port,
|
||||
reload=args.reload,
|
||||
log_level=log_level.lower(),
|
||||
)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user