Los marcos web Python m谩s r谩pidos en 2019



En 2018, Python fortaleci贸 su popularidad entre los programadores e ingres贸 a los 3 idiomas m谩s populares en github . Cada vez m谩s personas se est谩n moviendo hacia el lado positivo ... es decir, Python. Un n煤mero a煤n mayor de desarrolladores han aparecido interesados 鈥嬧媏n este lenguaje y est谩n desarrollando sus proyectos con su ayuda. Una de las 谩reas populares para Python es el desarrollo web. Me gustar铆a no solo que el proceso de desarrollo sea conveniente y r谩pido, sino que tambi茅n los proyectos en s铆 mismos pueden presumir de rapidez y estabilidad en el trabajo.

Python tiene muchos marcos que salvan al programador de las operaciones de rutina y le permiten concentrarse en resolver problemas. En 2018, los marcos existentes se actualizaron y aparecieron nuevas herramientas.

Por lo tanto, decidimos compilar un an谩lisis comparativo de los marcos populares que no perder谩n, esperamos, su relevancia a lo largo de 2019 y determinar el m谩s r谩pido de ellos.

Prueba de participantes


Django




Versi贸n: 2.1.4
Descripci贸n: el procesador m谩s popular para Python, que soluciona muchos problemas (administraci贸n, autorizaci贸n, registro, ORM, etc.). Esto simplifica la vida del desarrollador, pero si priorizamos la velocidad del trabajo, a veces un procesador de este tipo juega en nuestra contra y esto afecta la productividad. Por esta raz贸n, lo m谩s probable es que no tome el marco web m谩s r谩pido de Python en la nominaci贸n de 2019.

Matraz




Versi贸n: 1.0.2
Descripci贸n: el framework Python m谩s popular (incluso Django supera a las estrellas en GitHub). Una opci贸n popular en casos de desarrollo de peque帽os proyectos que no necesitan esos bollos que est谩n en Django. Le permite implementar r谩pidamente la aplicaci贸n. Quiz谩s m谩s r谩pido que Django en t茅rminos de velocidad, pero tiene muy poca funcionalidad fuera de la caja.

Aiohttp




Versi贸n: 3.5.1
Descripci贸n: Un marco de Python as铆ncrono muy atractivo. Tiene una versi贸n de cliente y servidor, lo que libera significativamente sus manos durante el desarrollo. Tiene solicitudes as铆ncronas muy convenientes de la versi贸n del cliente, as铆 como muy buenos indicadores de la velocidad del servidor con una gran cantidad de solicitudes. Definitivamente deber铆a entrar en los tres primeros.

Sanic




Versi贸n: 18.12
Descripci贸n: podemos decir que este es un "Frasco de m煤ltiples subprocesos" con todas las consecuencias. Por esta raz贸n, creemos que los resultados deber铆an ser muy buenos.

Tornado




Versi贸n: 5.1.1
Descripci贸n: un veterano as铆ncrono del movimiento Python, que marc贸 la tendencia de la asincron铆a en 2010. No pierde su relevancia y recibi贸 la quinta versi贸n en 2018. Umbral de entrada bastante alto para principiantes. Popular entre los pitonistas de la vieja escuela, y pensamos por una buena raz贸n. Debe mostrar buenos resultados.

Vibora




Versi贸n probada: sin lanzamientos en GitHub
Descripci贸n: un marco prometedor que apareci贸 en junio de 2018 y en los 煤ltimos seis meses ha ganado m谩s de 4000 estrellas. Tiene mediciones de rendimiento impresionantes en GitHub. Pensamos que Vibora ser铆a el favorito de nuestra raza, pero desafortunadamente debido a la falta de la capacidad de correr bajo Python> = 3.7 y la falta de una versi贸n estable del marco, excluimos a Vibora.
En GitHub, los desarrolladores prometen un Vibora "radicalmente nuevo" pronto. Veamos qu茅 hacen y aseg煤rese de escribir al respecto.

Metodolog铆a de prueba


Las pruebas se realizaron en Apple iMac 27 '' Retina 5K 2017, CPU: 3.5GHz i5, RAM: 8GB, 1000GB Fusion Drive, OSX 10.14.2 usando la utilidad WRK :

wrk -t12 -c400 -d30s http://127.0.0.1:8080/db/ 

Las pruebas se realizaron en Python 3.7.2. Todos los marcos se lanzaron con Gunicorn con dos trabajadores. Quiz谩s en algunos casos, el uso de uwsgi hubiera afectado los resultados, pero dado que nos propusimos probar marcos y no c贸mo ejecutarlos, decidimos descuidar esto.

Solo ten铆amos un tipo de prueba: DB Test, en la que obtenemos datos de cadena de la base de datos y los devolvemos como una respuesta html (1 entrada en 79 bytes). Postgres 11 se us贸 como la base de datos, Psycopg2 se utiliz贸 como el controlador de acceso a la base de datos para frameworks s铆ncronos y asyncpg para los as铆ncronos.

Las bibliotecas para marcos asincr贸nicos decidieron usar uvloop como un bucle de eventos.

Resultados


Solicitudes por segundo



Posiciones de liderazgo bastante esperadas por aiohttp y Sanic, pero resultados inesperados de Tornado.

Transferencia de datos por segundo (Kb)



Django est谩 muy por detr谩s en la cantidad de datos transferidos por segundo.

Tiempo promedio de solicitud (ms)



Una vez m谩s, sorprende desafortunadamente Tornado, en el que inicialmente confiamos. Impresionante es Flask, que en promedio consulta el tiempo compite con l铆deres potenciales.

Tiempo m谩ximo de solicitud (seg.)



Todos los "experimentales" mostraron casi los mismos resultados para el tiempo m谩ximo de consulta. Todo, como esper谩bamos.

Resultados finales


12 hilos


400 conexiones


PromedioMaxSolicitudes / seg.Transferencia / seg (KB)
Latencia (ms)Req / secLatencia (ms)Req / sec
Django147,99120,911,98640425,7178,99
Matraz186,865,651,75280546,2127,48
aiohttp165,07247,161,985851966,28439,72
Sanic194,8170,851,984701520,9292,6
Tornado279,3101,711,74272778,75222,07

Resumen


Aiohttp: l铆der de rendimiento a principios de 2019. Si su tarea requiere el m谩ximo rendimiento, entonces deber铆a echarle un vistazo m谩s de cerca. Adem谩s, puede experimentar con las opciones de inicio de aiohttp para exprimirlo a煤n m谩s. Tiene una versi贸n de cliente que le permite realizar solicitudes asincr贸nicas sin bibliotecas adicionales. Por lo tanto, para implementar nuestro nuevo servicio altamente cargado, lo elegimos.

Sanic: La popularidad del marco va por delante de su rendimiento. No ocurri贸 un milagro y adelantar al l铆der no funcion贸. Junto con el hilo en Reddit sobre problemas de seguridad, no usar铆amos Sanic en este momento y esperamos la acci贸n de los desarrolladores.

Tornado: "Decepci贸n del a帽o". En relaci贸n con los resultados, no creemos que se deba elegir Tornado para la implementaci贸n de nuevos proyectos. Esperamos que los desarrolladores encuentren algo y corrijan la situaci贸n.

Django mostr贸 el resultado esperado. Nos encanta Django por sus caracter铆sticas y por liberarnos de la rutina, y no por la velocidad del trabajo. Una comunidad extensa, una gran cantidad de materiales en la Web, una gran cantidad de proyectos implementados en el dominio p煤blico, todo esto lo hace atractivo para los principiantes. Si tuvi茅ramos la tarea de desarrollar r谩pidamente el MVP de un servicio web t铆pico, lo elegir铆amos en 2019.

Frasco tambi茅n mostr贸 el resultado esperado. Pas贸 por alto Django debido al hecho de que no tiene una funcionalidad tan rica fuera de la caja. No alcanc茅 la velocidad de los marcos asincr贸nicos. Lo elegir铆amos en 2019 para la implementaci贸n de peque帽os proyectos de mascotas o cuando la velocidad ya es importante, pero a煤n no existe el deseo de lidiar con marcos asincr贸nicos.

Puede ver todos los archivos de referencia de origen en el repositorio de referencia de Python Frameworks .

Source: https://habr.com/ru/post/440282/


All Articles