main.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from config.settings import PORT, OPENAI_API_KEY, BG_DATA_PATH,DEVELOPMENT, validate_config
  2. import os
  3. import uvicorn
  4. from app import create_app, setup_routes
  5. from logging import getLogger
  6. from services.data_service import initialize_db
  7. logger = getLogger("main")
  8. def main():
  9. """Main application entry point"""
  10. logger.info("Starting Pedidos Express application")
  11. try:
  12. # Validate configuration
  13. if not validate_config():
  14. logger.critical("FATAL: Configuration validation failed.")
  15. if not OPENAI_API_KEY:
  16. logger.error("Please create a .env file with OPENAI_API_KEY='your_key_here'")
  17. with open(".env", "w") as f:
  18. f.write("OPENAI_API_KEY='your_key_here'")
  19. return None
  20. # Create and configure app
  21. logger.info("Creating FastAPI application")
  22. app = create_app()
  23. logger.info("Setting up application routes")
  24. setup_routes(app)
  25. # Initialize database
  26. logger.info("Initializing database")
  27. initialize_db()
  28. # Display startup information
  29. logger.info(f"Server starting on http://localhost:{PORT}")
  30. if not os.path.exists(BG_DATA_PATH):
  31. logger.warning(f"WARNING: {BG_DATA_PATH} not found. AI assistant will not have specific menu data.")
  32. else:
  33. logger.info(f"AI assistant data loaded from: {os.path.abspath(BG_DATA_PATH)}")
  34. logger.info("Pedidos Express application ready to serve requests")
  35. return app
  36. except Exception as e:
  37. error_msg = f"Critical error during application startup: - {e}"
  38. logger.critical(error_msg)
  39. return None
  40. app = main()
  41. if not app:
  42. logger.critical("FATAL: Failed to create FastAPI app.")
  43. exit(1)
  44. logger.info("Application initialized successfully")
  45. if __name__ == "__main__":
  46. logger.info(f"Starting server with uvicorn on port {PORT}")
  47. uvicorn.run(app, host="0.0.0.0", port=PORT, log_level="info", access_log=False)