jueves, 21 de agosto de 2025

WEBPROPv2 (I). Arranque de la aplicacion (mnu_main.py)

 1. Arranque de la aplicación

Vemos el módulo que arranca la aplicación. El arranque se realiza con la sentencia uvicorn.run().

Este módulo:

  • Arranca el servidor web unicorv
  • Le passa los parametros necesarios al servidor para arrancar con https:
    • nombre del servidor o ip, 
    • puerto, 
    • certificado (certifcdo + clave)
  • Crea las tablas en base al modelo objeto relacional
  • Utiliza el módulo menu_fh para configurar el objeto app de FastHTML 

El módulo se llama mnu_main.py

 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
#!/home/eduard/MyPython/11.softprop-01/venv_softprop/bin/python3

#1. Imports
import os
from sqlalchemy import Table
#------Imprescindible para poder importar de otras carpetas (de basicutils)
import sys
from pathlib import Path
path_root1 = Path(__file__).parents[1] # Damos un salto de directorio hacia arriba-> ximoutilsmod
sys.path.append(str(path_root1))
path_root0 = Path(__file__).parents[0] # El mismo directorio
sys.path.append(str(path_root0))
# ------Fin imprescindible

#--------------------------------------------------------
# NOTA: No eliminar las siguientes dependencias marcadas en gris 
#       pues, sinó falla el programa
#       De menus: routes01mnu, routes02form, routes03grid, app
#       De basicutils: xmdb, xmfunction
#       De menus.mnu_fh: fh
#       De models.xmallmodels: model_classes
#--------------------------------------------------------
from menus import routes00comp, routes01mnu, routes02form, routes03grid # No eliminar !!!
from basicutils import xmdb, xmfunction

# Ahora importamos las funciones de FastHtml pero mejoradas con nuevos componentes
from menus.mnu_fh import fh, app                         # No eliminar app !!!

#--- Definición de tablas de la Base de datos postgres
from models.xmallmodels import model_classes


# Create database tables
xmdb.Base.metadata.create_all(bind=xmdb.engine)

# Execute the web server, but now not using fh.serve but uvicorm.run instead
#fh.serve()
if __name__ == "__main__":
	import uvicorn
	cert_path="/home/eduard/MyPython/11.softprop-01/static/certs/wildcard.tavernes.es."
	uvicorn.run(app, host="edu.tavernes.es", port=5001,	
	#uvicorn.run(app, host="192.168.10.5", port=5001,	
		ssl_keyfile =cert_path+"key", 
		ssl_certfile=cert_path+"crt"
	)

A destacar:

Línea 1: El shebang que indica que entorno virtual ejecutar el programa

Lineas 4-5: Importacioón de librería del entorno virtual

Líneas 7-12: Truco para poder importar nuestras librerias (permite reconocer las rutas en 2 niveles de subcarpetas

Linea 27: Hemos delegado la configuración de la app de FastHTML al módulo mnu_fh donde se definen las rutas estáticas, las rutas que no vamos a revisar la seguridad ...

Lineas 30 y 34: Importamos las clases que originaran tablas(línea 30)  y las creamos (linea 34) 

Línea 39: importamos el servidor web "uvicorn"

linea 40: Definimos la ubicación del certificado de servidor junto con la raiz del nombre de los ficheros de clave y certifcado

Línea 41: Ejecutamos el servidor web, le indicamos la app que hemos complementado, la URL del servidor web (o IP) el puerto y la rutas del certificado y clave asociada. 






No hay comentarios :

Publicar un comentario