Presentación de las prestaciones y mejoras realizadas en el rendimineto del programa de gestión Tryton.
Presentación realizada en las I Jornadas Tryton de 2016 en Barcelona.
4. 1.2/Operaciones en batch: create()
parties = []
for x in xrange(1000):
party = Party()
Party.code = random()
Party.create([x._save_values for x in parties])
o
Party.save(parties)
5. 1.3/Operaciones en batch: save()
for party in parties:
party.code = random()
party.save()
for party in parties:
party.code = random()
Party.save(parties)
6. 1.4/Cache
● Pre-carga de 2000 registros (configurable)
● Anti-patrón: acceso aleatorio a los datos cargados
mediante search/browse
Party = Pool().get('party.party')
parties = Party.search([])
for party in parties:
for address in party.addresses:
pass
7. 1.4/Adjuntos
● Problema con python a nivel de comunicación. Introducido
workaround en Tryton. Muy lento para ficheros de algunos
MB
● Se guardan en el sistema de ficheros
8. 1.5/Campos funcionales
● Trabajar en batch si no se puede hacer uso de la cache:
@classmethod
def get_value(cls, names, records):
pass
def get_value(self):
pass
10. 2.1/Múltiples procesos
● Reverse proxy con NGINX o bien WSGI a partir de la 4.0
● Cron integrado: lanzado en un proceso independiente del
que recibe las peticiones RPC
● celery_tryton
● Jasper server
15. 4.1/Soft & hard
● PyPy vs cPython
● Pyhon no libera memoria una vez consumida
● Un proceso python podemos esperar que consuma entre
400MB y 1GB – si excede debería ser un problema
● SSD está muy bien, ¿lo necesitas?
17. ● PosgreSQL 9.6 – varios procesos para ejecutar una
consulta – excelente escalabilidad hasta 4 procesos
● Mecanismo estándar para guardar binarios en el sistema
de ficheros
● Desaparición de los Properties
● ¿Ejecución asíncrona de consultas SQL?
● ¿Utilizar C en python-sql?
● Mejorar gestión de las jerarquías – Adjancency list
5.1/Futuro