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.