Más sobre persistencia de datos https://podcast.jcea.es/python/10
En esta ocasión grabamos un miércoles porque ayer fue festivo en
España.
Participantes:
Eduardo Castro, email:
info@ecdesign.es. Conectando desde A
Guarda.
Jesús Cea, email: jcea@jcea.es, twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.
Miguel Sánchez, email:
msanchez@uninet.edu, conectando desde
Canarias.
Víctor Ramírez, twitter: @virako,
programador python y amante de vim, conectando desde Huelva.
Artur, conectando desde Vigo.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
Referencia a un
mensaje
enviado a la lista de correo.
Los módulos se importan una sola vez.
mod_wsgi: https://pypi.org/project/mod-wsgi/.
matplotlib: https://matplotlib.org/.
Damos con la solución: Ojo con los objetos globales y
múltiples hilos.
Py_FileSystemDefaultEncodeErrors and Py_UTF8Mode are not
available with limited API:
https://bugs.python.org/issue41986.
mundo de Python asíncrono?
de async/await en Python es... fea.
La idea es buena, pero la implementación es chapucera y poco
transparente.
Es muy difícil combinar los mundos síncronos y asíncronos.
Las librerías tienen que tomar partido.
El código asíncrono "contamina" todo el programa.
Las distribuciones no están a la última. Cada cliente tiene
instalado algo distinto.
Utilizar cosas como Docker
https://es.wikipedia.org/wiki/Docker, para independizarte
de la versión orifial del Sistema Operativo.
Los tests te salvan el día a la hora de actualizar de
versión.
Hypothesis: https://pypi.org/project/hypothesis/.
Prueba de mutación:
https://es.wikipedia.org/wiki/Prueba_de_mutaci%C3%B3n.
Python Bytes https://pythonbytes.fm/.
Seis temas, media hora. Semanal.
Opinión con criterio.
Podcast de testing: Test & Code https://testandcode.com/.
No suele haber problemas de compatibilidad actualizando a
versiones más modernas de Python 3, y los cambios necesarios
-si los hay- son menores.
Problema: Los paquetes precompilados de librerías complejas
pueden tardar en estar disponible para la nueva versión de
Python.
Muchas librerías complejas no publican versiones
precompiladas de forma retroactiva para las versiones
nuevas de Python cuando salen, hay que esperar a que
saquen una nueva versión de la librería, a veces meses
después.
Si tardas en actualizar, actualizar múltiples versiones de
golpe puede ser muy costoso.
https://pyfound.blogspot.com/2020/11/pip-20-3-new-resolver.html.
Se puede usar la opción -use-deprecated=legacy-resolver.
Librerías compatibles con versiones nuevas de Python, pero
que PIP no quiere instalar porque en los descriptores del
proyecto no dice que sea compatible. Esto es un problema
cuando sale una versión nueva de Python.
Spam de Jesús en las listas de correo.
¿Qué pasa con la gente de hispanoamérica?
Mucha gente conectando desde Vigo y alrededores.
Comunidades técnicas en el entorno de Vigo.
Vigo Tech Alliance https://vigotech.org/.
A Industriosa https://aindustriosa.org/.
SQLAlchemy https://www.sqlalchemy.org/.
Modelos de datos.
Diversas bases de datos.
PostgreSQL: https://www.postgresql.org/.
MySQL: https://www.mysql.com/.
MongoDB: https://www.mongodb.com/.
Jesús Cea usa sistemas de persistencia. Se ha hablado mucho
de esto en una tertulia anterior.
Tema abordado de forma extensa en la tertulia anterior:
https://podcast.jcea.es/python/9. Revisa el audio y/o las
notas de esa grabación.
Trabajando con persistencia, no puedes traerte tus ideas de
teoría relacional. Se trabaja de otra manera.
Acceso al sistema de persistencia a través de un API.
SQLAlchemy https://www.sqlalchemy.org/?
¿Cómo se actualiza la definición de objetos? Jesús describe
las dos técnicas que usa:
Versión global de la base de datos con actualización en
el arranque.
Cada objeto tiene su versión y se actualiza al cargarlo
en memoria.
Los objetos son objetos nativos de Python. Para que otros
lenguajes puedan acceder a los datos hay que proporcionarles
un API.
https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern.
Event Sourcing
https://dev.to/barryosull/event-sourcing-what-it-is-and-why-its-awesome.
Lenguaje Linda
https://en.wikipedia.org/wiki/Linda_(coordination_language).
RabbitMQ: https://www.rabbitmq.com/.
ZeroMQ: https://zeromq.org/.
Redis: https://redis.io/.
Colas persistentes.
BerkeleyDB: https://en.wikipedia.org/wiki/BerkeleyDB.
Github: https://github.com/.