Ali2206 commited on
Commit
ef0c125
·
1 Parent(s): c0559a6

Add debugging and improve startup: Enhanced environment variable logging, created run.py startup script, updated Dockerfile for better error handling

Browse files
Files changed (3) hide show
  1. Dockerfile +2 -2
  2. app.py +16 -1
  3. run.py +53 -0
Dockerfile CHANGED
@@ -16,5 +16,5 @@ EXPOSE 8000
16
  ENV PORT=8000
17
  ENV CORS_ORIGIN=*
18
 
19
- # Run the FastAPI application
20
- CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
 
16
  ENV PORT=8000
17
  ENV CORS_ORIGIN=*
18
 
19
+ # Run the FastAPI application using our startup script
20
+ CMD ["python", "run.py"]
app.py CHANGED
@@ -41,8 +41,13 @@ from dotenv import load_dotenv
41
  # For Hugging Face Spaces, environment variables are set in the Space settings
42
  try:
43
  load_dotenv('mongodb.env')
 
44
  except:
45
- pass # Continue without .env file if not found
 
 
 
 
46
 
47
  # Configure logging
48
  logging.basicConfig(
@@ -60,6 +65,16 @@ MONGODB_URI = os.getenv('MONGODB_URI', 'mongodb://localhost:27017/audit_checklis
60
  PORT = int(os.getenv('PORT', 8000)) # Hugging Face Spaces uses port 8000
61
  CORS_ORIGIN = os.getenv('CORS_ORIGIN', '*') # Allow all origins by default for mobile apps
62
 
 
 
 
 
 
 
 
 
 
 
63
  # Initialize FastAPI application
64
  app = FastAPI(
65
  title="Audit Checklist API",
 
41
  # For Hugging Face Spaces, environment variables are set in the Space settings
42
  try:
43
  load_dotenv('mongodb.env')
44
+ logger.info("✅ Loaded environment variables from mongodb.env")
45
  except:
46
+ try:
47
+ load_dotenv('.env')
48
+ logger.info("✅ Loaded environment variables from .env")
49
+ except:
50
+ logger.info("ℹ️ No .env file found, using system environment variables")
51
 
52
  # Configure logging
53
  logging.basicConfig(
 
65
  PORT = int(os.getenv('PORT', 8000)) # Hugging Face Spaces uses port 8000
66
  CORS_ORIGIN = os.getenv('CORS_ORIGIN', '*') # Allow all origins by default for mobile apps
67
 
68
+ # Debug logging for environment variables
69
+ logger.info(f"MONGODB_URI: {'*' * 50 if MONGODB_URI.startswith('mongodb+srv://') else MONGODB_URI}")
70
+ logger.info(f"PORT: {PORT}")
71
+ logger.info(f"CORS_ORIGIN: {CORS_ORIGIN}")
72
+
73
+ # Check if we're using the default MongoDB URI (which means env var is not set)
74
+ if MONGODB_URI == 'mongodb://localhost:27017/audit_checklist':
75
+ logger.warning("⚠️ MONGODB_URI environment variable not set! Using default localhost connection.")
76
+ logger.warning("⚠️ Please set MONGODB_URI environment variable in Hugging Face Space settings.")
77
+
78
  # Initialize FastAPI application
79
  app = FastAPI(
80
  title="Audit Checklist API",
run.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Startup script for Hugging Face Spaces deployment
4
+ """
5
+ import os
6
+ import sys
7
+ import logging
8
+
9
+ # Set up logging
10
+ logging.basicConfig(level=logging.INFO)
11
+ logger = logging.getLogger(__name__)
12
+
13
+ def main():
14
+ """Main startup function for HF Spaces"""
15
+
16
+ # Log environment information
17
+ logger.info("🚀 Starting Audit Checklist API on Hugging Face Spaces")
18
+ logger.info(f"Python version: {sys.version}")
19
+ logger.info(f"Working directory: {os.getcwd()}")
20
+
21
+ # Check environment variables
22
+ mongodb_uri = os.getenv('MONGODB_URI')
23
+ port = os.getenv('PORT', '8000')
24
+
25
+ logger.info(f"PORT: {port}")
26
+ if mongodb_uri:
27
+ logger.info(f"MONGODB_URI: {'*' * 50}")
28
+ else:
29
+ logger.warning("⚠️ MONGODB_URI not found in environment variables!")
30
+ logger.warning("⚠️ Please set MONGODB_URI in your HF Space settings")
31
+ logger.warning("⚠️ Expected format: mongodb+srv://username:password@cluster.mongodb.net/database")
32
+
33
+ # Import and run the FastAPI app
34
+ try:
35
+ import uvicorn
36
+ from app import app
37
+
38
+ logger.info("✅ FastAPI app imported successfully")
39
+ logger.info(f"🌐 Starting server on port {port}")
40
+
41
+ uvicorn.run(
42
+ app,
43
+ host="0.0.0.0",
44
+ port=int(port),
45
+ log_level="info"
46
+ )
47
+
48
+ except Exception as e:
49
+ logger.error(f"❌ Failed to start application: {e}")
50
+ sys.exit(1)
51
+
52
+ if __name__ == "__main__":
53
+ main()