-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.py
More file actions
executable file
·89 lines (75 loc) · 2.61 KB
/
server.py
File metadata and controls
executable file
·89 lines (75 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/env python3
"""
Servidor principal da aplicação
"""
import os
import sys
import signal
import logging
import uvicorn
from pathlib import Path
# Configurar logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
handlers=[
logging.StreamHandler(sys.stdout),
logging.FileHandler("server.log")
]
)
logger = logging.getLogger("image-ai")
# Adicionar src ao path
src_path = Path(__file__).parent / "src"
sys.path.insert(0, str(src_path))
from config.settings import settings
def handle_shutdown(signum, frame):
"""Handler para sinais de shutdown"""
signal_names = {
signal.SIGINT: "SIGINT",
signal.SIGTERM: "SIGTERM"
}
logger.info(f"Recebido sinal {signal_names.get(signum, signum)}. Iniciando shutdown gracioso...")
sys.exit(0)
def setup_signal_handlers():
"""Configurar handlers para sinais"""
signal.signal(signal.SIGINT, handle_shutdown)
signal.signal(signal.SIGTERM, handle_shutdown)
def check_environment():
"""Verificar e configurar ambiente"""
# Criar diretórios necessários
os.makedirs(settings.output_dir, exist_ok=True)
os.makedirs(settings.cache_dir, exist_ok=True)
os.makedirs(settings.logs_dir, exist_ok=True)
# Verificar configurações críticas
if settings.debug:
logger.warning("Modo debug ativado. Não recomendado para produção!")
# Verificar API key em produção
if not settings.debug and not settings.api_key:
logger.warning("API Key não configurada em ambiente de produção. Considere habilitar para segurança.")
def main():
"""Função principal"""
try:
# Configurar handlers para graceful shutdown
setup_signal_handlers()
# Verificar e preparar ambiente
check_environment()
logger.info("🚀 Iniciando AI Image Generation Service")
logger.info(f"📁 Output: {settings.output_dir}")
logger.info(f"💾 Cache: {settings.cache_dir}")
logger.info(f"🔧 Workers: {settings.max_workers}")
logger.info(f"🌐 Servidor: http://{settings.host}:{settings.port}")
logger.info("=" * 50)
# Iniciar servidor
uvicorn.run(
"src.api.main:app",
host=settings.host,
port=settings.port,
reload=settings.debug,
log_level=settings.log_level.lower(),
access_log=True
)
except Exception as e:
logger.error(f"Erro fatal durante inicialização: {e}", exc_info=True)
sys.exit(1)
if __name__ == "__main__":
main()