Hice una aplicación cliente que usa HTTP para comunicarse con un servidor Python 2 usando una API simple. El servidor usa el ORM de SQLAlchemy bastante extensamente para servir los datos para esas solicitudes HTTP. El problema es que el uso de mi CPU es bastante alto incluso con pocos clientes activos. Este servidor debería poder atender a unos pocos cientos de clientes al mismo tiempo, alrededor de 1 solicitud de un segundo por cliente, por lo que debería ser manejable (o eso espero).¿Cómo mejorar el rendimiento de SQLAlchemy?
¿Cómo puedo mejorar el rendimiento? Sé que el problema es el ORM, ya que cProfile muestra esto con bastante claridad. Una sola consulta aparentemente ejecuta alrededor de 10000 instrucciones de Python, lo que parece bastante extraño. Intenté conectar diferentes motores de base de datos/backends y cambié el intérprete a Pypy solo por diversión, pero obviamente no ayudó al problema original y tampoco mejoró el rendimiento.
¿Qué estoy haciendo mal aquí? Realmente espero que este sea un "¡bien, duh!" problema.
¿Deberían mis relaciones ser de un tipo diferente? ansioso, perezoso, dinámico, etc. En este momento, no especifico nada en particular.
Ayuda muy apreciada.
eche un vistazo a mi respuesta http://stackoverflow.com/questions/1171166/how-can-i-profile-a-sqlalchemy-powered-application/1175677#1175677 para algunos lugares donde comenzar – zzzeek