Los archivos incluidos en el repositorio original son:
mkdocs.yml: configuración de la documentación en Material for MkDocs. Para más detalles, ver su documentación.requirements.txt: especificación de las dependencias de paquetes de Python.LICENSE: licencia Creative Commons Zero v1.0 Universal de derechos de autor..gitignore: archivos y directorios que Git ignora para hacer control de versiones y para subir a un repositorio remoto. Típicamente son archivos con datos privados o específicos del sistema operativo local, que no deben reproducirse en el repositorio de otros desarrolladores.
Las instrucciones del proyecto están disponibles en la página:
https://mpss-eie.github.io/proyecto
Algunos de los paquetes y funcionalidades del proyecto solamente corren en los sistemas operativos tipo Unix, como Linux y macOS.
Por esta razón, las personas con Windows deben utilizar el WSL (Windows Subsystem for Linux) de Microsoft (o solución equivalente).
Las instrucciones de instalación indican que solamente es necesario la siguiente instrucción en la terminal, la cual instala la distribución Ubuntu, por defecto:
wsl --installUna vez en la terminal (o consola o interfaz de línea de comandos) en Linux en WSL, es necesario tener un usuario con privilegios sudo. Es posible configurarlo con:
adduser <username>donde <username> puede ser, por ejemplo, bayes o laplace o markov o un nombre de su preferencia (funkytomato), y luego ingresar
usermod -aG sudo <username>para actualizar los permisos. Para cambiar de usuario root a <username> y empezar una nueva sesión de terminal con ese usuario, utilizar
su <username>También es recomendado utilizar la Terminal Windows, que ofrece mejores herramientas para manejar múltiples terminales, tanto en Windows como en el WSL. También Warp es una terminal recomendada.
Nótese que WSL no es ni una máquina virtual ni una configuración de arranque dual (dual boot), sino que opera nativamente en Windows. Además, los archivos de Windows están disponibles desde Linux y viceversa.
Una vez instalado WSL, las instrucciones a partir de ahora aplican para una terminal Unix con bash o zsh, indicado con el símbolo del prompt $.
Para comenzar, es necesario "clonar" el repositorio con sus archivos localmente. Para esto:
- Asegurarse de que Git está instalado. Es posible verificar con
$ git --version. - Ubicarse en el directorio donde estará ubicado el proyecto, con
$ cd. - Clonar el proyecto con
$ git clone https://github.com/mpss-eie/proyecto.git. - Moverse al directorio del proyecto con
$ cd proyecto/. - Si no fue hecho antes, configurar las credenciales de Git en el sistema local, con
$ git config --global user.name "Nombre Apellido"y$ git config --global user.email "your-email@example.com", de modo que quede vinculado con la cuenta de GitHub.
En una terminal, en el directorio raíz del repositorio, utilizar:
python3 -m venv envdonde env es el nombre del ambiente. Esto crea una carpeta con ese nombre.
Para activar el ambiente virtual, utilizar:
source env/bin/activatedonde env/bin/activate es el PATH. El prompt de la terminal cambiará para algo similar a:
base env ~/.../pipeline $En este ambiente virtual no hay paquetes de Python instalados. Es posible verificar esto con pip list, que devolverá algo como:
Package Version
---------- -------
pip 24.0
setuptools 65.5.0Con el ambiente virtual activado, instalar los paquetes indicados en el archivo requirements.txt, con:
pip install -r requirements.txtPara verificar la instalación, es posible usar nuevamente pip list, que ahora mostrará una buena cantidad de nuevos paquetes y sus dependencias.
En una terminal, en el directorio raíz del repositorio, utilizar:
mkdocs serveAbrir en un navegador web la página del "servidor local" en el puerto 8000, en http://127.0.0.1:8000/ o en http://localhost:8000/.
Cada cambio en los documentos de la carpeta docs/ o en el archivo mkdocs.yml genera un refrescamiento de la página.
Para salir de la visualización, utilizar Ctrl + C, o, de otro modo, dejar el proceso corriendo mientras edita la documentación.
- En el directorio raíz, crear un archivo
proyecto.cfgcon el siguiente contenido:
[api]
url = https://kalouk.xyz/api/datos
group = 000
[db]
db = sqlite
sqlite = sqlite:///proyecto.db
postgresql = postgresql://localhost:5432/proyecto
[scheduler]
period = 15
y modificar según las necesidades de su implementación. Es recomendable mantener un archivo de configuración con las variables separadas del código, para no hard-codear-las. Notar que proyecto.cfg está en el archivo .gitignore y por tanto no estará incluido en los commits.
- En una nueva terminal ejecutar el siguiente comando para activar Redis (más detalles sobre Redis en la documentación):
redis-serverdejar esta terminal "corriendo".
Nota: en sistemas Linux usualmente ya está corriendo como servicio del sistema y por tanto dará un error de que ya está ocupado el proceso. En ese caso es posible ignorar este paso.
- En una nueva terminal ejecutar el siguiente comando para activar Celery Worker (más detalles sobre Celery en la documentación):
celery --app tasks worker --loglevel=INFOdejar esta terminal "corriendo".
Nota: cada vez que haya cambios en tasks.py debe reiniciarse este proceso (Ctrl + C para detener).
- En una nueva terminal ejecutar el siguiente comando para activar Celery Beat (más detalles sobre Celery Beat en la documentación):
celery --app tasks beat --loglevel=INFOdejar esta terminal "corriendo".
En este punto, ya el código de ejemplo debería estar importando y guardando datos en la base de datos, según está detallado en models.py y tasks.py.
Nota: para hacer una sola prueba de la función (@app.task) y no activar Celery Beat, es posible utilizar en la terminal, en el mismo directorio que tasks.py:
$ python
>>> from tasks import test_task
>>> url = "https://kalouk.xyz/api/datos"
>>> group = "000"
>>> test_task.delay(url, group)Es decir, utilizar Python para importar la función test_task (o la función creada para su proyecto) y ejecutar el método .delay() para ejecución sincrónica ("en el momento").
La documentación está en Markdown, que tiene muchas posibilidades.
Sea
donde
Herramienta recomendada: TableConvert.
| Producto | Precio |
|---|---|
| Piña | 1500 |
| Melón | 1250 |
| Manzana | 2100 |
| Papaya | 1200 |