python - widgets - formularios django




¿Django escala? (20)

Estoy construyendo una aplicación web con Django . Las razones por las que elegí Django fueron:

  • Quería trabajar con herramientas gratuitas / de código abierto.
  • Me gusta Python y siento que es un lenguaje a largo plazo , mientras que con respecto a Ruby no estaba seguro, y PHP parecía una gran dificultad para aprender.
  • Estoy construyendo un prototipo para una idea y no estaba pensando demasiado en el futuro. La velocidad de desarrollo fue el factor principal, y ya conocía Python .
  • Sabía que la migración a Google App Engine sería más fácil si decidiera hacerlo en el futuro.
  • Escuché que Django estaba "bien".

Ahora que estoy más cerca de pensar en publicar mi trabajo, empiezo a preocuparme por la escala. La única información que encontré sobre las capacidades de escalamiento de Django es provista por el equipo de Django (no estoy diciendo nada para ignorarlos, pero claramente no es información objetiva ...).

Mis preguntas:

  • ¿Cuál es el sitio "más grande" que se basa en Django hoy? (Mido el tamaño principalmente por el tráfico del usuario)
  • ¿Puede Django tratar con 100,000 usuarios diariamente , cada uno visitando el sitio por un par de horas?
  • ¿Podría un sitio como StackOverflow ejecutarse en Django?

¿Cuál es el sitio "más grande" que se basa en Django hoy? (Mido el tamaño principalmente por el tráfico del usuario)

En los Estados Unidos, Mahalo . Me han dicho que manejan aproximadamente 10 millones de ejemplares al mes.

En el extranjero, la red Globo (una red de sitios de noticias, deportes y entretenimiento en Brasil); Alexa los clasifica entre los 100 mejores a nivel mundial (alrededor del 80 en la actualidad).

Otros usuarios notables de Django incluyen PBS, National Geographic, Discovery, NASA (en realidad, una serie de divisiones diferentes dentro de la NASA) y la Biblioteca del Congreso.

¿Puede Django tratar con 100 mil usuarios diariamente, cada uno visitando el sitio por un par de horas?

Sí, pero solo si has escrito tu aplicación correctamente y si tienes suficiente hardware. Django no es una bala mágica.

¿Podría un sitio como ejecutarse en Django?

Sí (pero ver más arriba).

En cuanto a la tecnología, fácilmente: ver soclone para un intento. En cuanto al tráfico, compite con por debajo de 1 millón de unidades al mes. Puedo nombrar al menos una docena de sitios de Django con más tráfico que SO.


  1. "¿Cuáles son los sitios más grandes construidos en Django hoy?"

    No hay un solo lugar que recopile información sobre el tráfico en los sitios construidos de Django, por lo que tendré que intentarlo utilizando datos de varias ubicaciones. Primero, tenemos una lista de sitios de Django en la página principal de la página principal del proyecto de Django y luego una lista de sitios de Django en djangosites.org . Revisando las listas y seleccionando algunas que sé que tienen un tráfico decente, vemos:

  2. "¿Puede Django tratar con 100,000 usuarios diariamente, cada uno visitando el sitio por un par de horas?"

    Sí, ver más arriba.

  3. "¿Podría un sitio como Desbordamiento de pila ejecutarse en Django?"

    Mi intuición es sí, pero, como respondieron otros y Mike Malone menciona en su presentación, el diseño de la base de datos es fundamental. También podemos encontrar pruebas sólidas en www.cnprog.com si podemos encontrar estadísticas de tráfico confiables. De todos modos, no es solo algo que sucederá al juntar un montón de modelos Django :)

Hay, por supuesto, muchos más sitios y bloggers de interés, ¡pero tengo que detenerme en alguna parte!

Publicación en el blog sobre el uso de Django para crear el sitio michaelmoore.com de alto tráfico descrito como uno de los 10.000 sitios web principales . Estadísticas de Quantcast y stats de compet.com .

(*) El autor de la edición, incluida dicha referencia, solía trabajar como desarrollador externo en ese proyecto.


Aunque ha habido muchas respuestas excelentes aquí, siento ganas de señalar que nadie ha puesto énfasis en ...

Depende de la aplicación

Si su aplicación es liviana en escrituras, ya que está leyendo muchos más datos de la base de datos de lo que está escribiendo. Luego, escalar el django debería ser bastante trivial, diablos, viene con un caché de salida / vista bastante decente directamente desde la caja. Haga uso de eso, y digamos, redis como proveedor de caché, coloque un equilibrador de carga delante de él, gire n-instancias y debería poder lidiar con una gran cantidad de tráfico.

Ahora, si tienes que hacer miles de escrituras complejas por segundo? Historia diferente. ¿Será Django una mala elección? Bueno, no necesariamente, depende de cómo diseñe realmente su solución y también de cuáles son sus requisitos.

Solo mis dos centavos :-)


Como se indica en el libro de alto rendimiento Django y vaya a través de este Cal Henderson

Ver más detalles como se menciona a continuación:

No es raro escuchar a la gente decir "Django no escala" . Dependiendo de cómo lo mires, la declaración es completamente verdadera o claramente falsa. Django, por sí solo, no escala.

Lo mismo se puede decir de Ruby on Rails, Flask, PHP o cualquier otro lenguaje utilizado por un sitio web dinámico basado en bases de datos.

Sin embargo, la buena noticia es que Django interactúa a la perfección con un conjunto de herramientas de almacenamiento en caché y equilibrio de carga que le permitirán escalar a la mayor cantidad de tráfico posible.

Contrariamente a lo que puede haber leído en línea, puede hacerlo sin reemplazar los componentes centrales, a menudo etiquetados como "demasiado lentos", como el ORM de la base de datos o la capa de plantilla.

Disqus sirve más de 8 mil millones de páginas vistas por mes. Esos son algunos números enormes.

Estos equipos han demostrado que Django sin duda hace escala. Nuestra experiencia aquí en Lincoln Loop lo respalda.

Hemos construido grandes sitios de Django capaces de pasar el día en la página de inicio de Reddit sin sudar.

Las historias de éxito de escalamiento de Django son casi demasiado numerosas para enumerarlas en este momento.

Respalda a Disqus, Instagram y Pinterest. ¿Quieres más pruebas? Instagram pudo sostener a más de 30 millones de usuarios en Django con solo 3 ingenieros (2 de los cuales no tenían desarrollo back-end)



Desarrollo sitios de alto tráfico utilizando Django para la emisora ​​nacional en Irlanda. Funciona bien para nosotros. Desarrollar un sitio de alto rendimiento es más que simplemente elegir un marco. Un marco solo será una parte de un sistema que sea tan fuerte como su eslabón más débil. El uso del último marco 'X' no solucionará sus problemas de rendimiento si el problema son las consultas lentas de la base de datos o un servidor o una red mal configurados.


Echa un vistazo a este micro agregador de noticias llamado EveryBlock .

Está escrito enteramente en Django. De hecho, son las personas que desarrollaron el propio framework Django.



Estamos haciendo pruebas de carga ahora. Creemos que podemos admitir 240 solicitudes simultáneas (una tasa sostenida de 120 aciertos por segundo 24x7) sin ninguna degradación significativa en el rendimiento del servidor. Eso sería 432,000 visitas por hora. Los tiempos de respuesta no son pequeños (nuestras transacciones son grandes) pero no hay una degradación de nuestro rendimiento de referencia a medida que aumenta la carga.

Estamos usando Django y MySQL de Apache. El sistema operativo es Red Hat Enterprise Linux (RHEL). 64 bits. Usamos mod_wsgi en modo daemon para Django. No hemos hecho ningún caché o optimización de la base de datos que no sea para aceptar los valores predeterminados.

Todos estamos en una máquina virtual en un Dell de 64 bits con (creo) 32Gb RAM.

Dado que el rendimiento es casi el mismo para 20 o 200 usuarios simultáneos, no necesitamos gastar grandes cantidades de tiempo en "ajustes". En su lugar, simplemente necesitamos mantener nuestro rendimiento básico a través de mejoras de rendimiento SSL ordinarias, diseño e implementación de bases de datos ordinarias (indexación, etc.), mejoras de rendimiento de firewall ordinarias, etc.

Lo que medimos es nuestras computadoras portátiles de prueba de carga que luchan contra la carga de trabajo insana de 15 procesos que ejecutan 16 subprocesos de solicitudes concurrentes.


Estoy seguro de que está buscando una respuesta más sólida, pero la validación objetiva más obvia que se me ocurre es que Google empuja a Django para usarlo con su marco de App Engine . Si alguien sabe y se ocupa de la escalabilidad de forma regular, es Google. Por lo que he leído, el factor más limitante parece ser el back-end de la base de datos, por lo que Google usa sus propios ...


He estado usando Django durante más de un año y estoy muy impresionado con la forma en que logra combinar la modularidad, la escalabilidad y la velocidad de desarrollo. Como con cualquier tecnología, viene con una curva de aprendizaje. Sin embargo, la excelente documentación de la comunidad de Django hace que esta curva de aprendizaje sea mucho menos pronunciada. Django ha sido capaz de manejar todo lo que he lanzado muy bien. Parece que será capaz de escalar bien en el futuro.

BidRodeo Penny Auctions es un sitio web de Django de tamaño moderado. Es un sitio web muy dinámico y maneja un buen número de páginas vistas al día.


Hoy usamos muchas aplicaciones web y sitios para nuestras necesidades. La mayoría de ellos son muy útiles. Te mostraré algunos de ellos usados ​​por python o django.

El Correo de Washington

El sitio web del Washington Post es una fuente de noticias en línea muy popular para acompañar su diario. Su gran cantidad de vistas y tráfico puede ser manejado fácilmente por el marco web de Django. Washington Post - 52.2 million unique visitors (March, 2015)

NASA

El sitio web oficial de la Administración Nacional de Aeronáutica y del Espacio es el lugar para encontrar noticias, fotos y videos sobre su exploración espacial en curso. Este sitio web de Django puede manejar fácilmente grandes cantidades de vistas y tráfico. 2 million visitors monthly

El guardián

The Guardian es un sitio web británico de noticias y medios propiedad de Guardian Media Group. Contiene casi todo el contenido de los periódicos The Guardian y The Observer. Esta enorme información es manejada por Django. The Guardian (commenting system) - 41,6 million unique visitors (October, 2014)

YouTube

Todos sabemos que YouTube es el lugar para subir videos de gatos y falla. Como uno de los sitios web más populares que existen, nos brinda un sinfín de horas de entretenimiento con video. El lenguaje de programación Python lo potencia y las características que amamos.

DropBox

DropBox comenzó la revolución de almacenamiento de documentos en línea que se ha convertido en parte de la vida cotidiana. Ahora almacenamos casi todo en la nube. Dropbox nos permite almacenar, sincronizar y compartir casi cualquier cosa utilizando el poder de Python.

Mono encuesta

Survey Monkey es la mayor compañía de encuestas en línea. Pueden manejar más de un millón de respuestas cada día en su sitio web de Python reescrito.

Quora

Quora es el lugar número uno en línea para hacer una pregunta y recibir respuestas de una comunidad de personas. En su sitio web de Python, estos miembros de la comunidad responden, editan y organizan los resultados relevantes.

Bitly

La mayoría del código para los servicios y análisis de acortamiento de URL de Bitly están todos construidos con Python. Su servicio puede manejar cientos de millones de eventos por día.

Reddit

Reddit es conocida como la portada de internet. Es el lugar en línea para encontrar información o entretenimiento basado en miles de categorías diferentes. Las publicaciones y los enlaces son generados por el usuario y se promueven a través de los votos. Muchas de las capacidades de Reddit dependen de Python para su funcionalidad.

Hipmunk

Hipmunk es un sitio de viajes para el consumidor en línea que compara los mejores sitios de viajes para encontrar las mejores ofertas. Las herramientas de este sitio web de Python le permiten encontrar los hoteles y vuelos más baratos para su destino.

Haga clic aquí para obtener más información: 25-of-the-most-popular-python-and-django-websites , What-are-some-well-known-sites-running-on-Django


La escala de las aplicaciones web no se trata de marcos web o idiomas, se trata de su arquitectura. Se trata de cómo maneja su caché de navegador, su caché de base de datos, cómo utiliza proveedores de persistencia no estándar (como CouchDB ), qué tan sintonizada es su base de datos y muchas otras cosas ...


Mi experiencia con Django es mínima, pero recuerdo que en The Django Book tienen un capítulo en el que entrevistan a personas que ejecutan algunas de las aplicaciones más grandes de Django. Aquí hay un enlace. Supongo que podría proporcionar algunas ideas.

Dice que curse.com es una de las aplicaciones de Django más grandes con alrededor de 60-90 millones de páginas vistas en un mes.


No estoy seguro de la cantidad de visitas diarias, pero aquí hay algunos ejemplos de grandes sitios de Django:

Aquí hay un enlace a la lista de sitios Django de alto tráfico en Quora .


Otro ejemplo es rasp.yandex.ru, servicio de horarios de transporte ruso. Su asistencia satisface sus necesidades.


Si desea utilizar el código abierto, hay muchas opciones para usted. Pero Python es el mejor entre ellos ya que tiene muchas bibliotecas y una comunidad estupenda. Estas son las razones que pueden cambiar tu mente:

  • Python es muy bueno, pero es un lenguaje interpretado que lo hace lento. Pero hay muchos servicios de aceleración y almacenamiento en caché que solucionan parcialmente este problema.

  • Si estás pensando en un desarrollo rápido, Ruby on Rails es el mejor entre todos. El lema principal de este marco (ROR) es brindar una experiencia cómoda a los desarrolladores. Si comparas a Ruby y Python, ambos tienen casi la misma sintaxis.

  • Google App Engine es un servicio muy bueno, pero te vinculará en su alcance, no tienes oportunidad de experimentar cosas nuevas. En lugar de eso, puede usar la nube de Digital Ocean que solo cobrará $ 5 / mes por su gota más simple. Heroku es otro servicio gratuito donde puedes implementar tu producto.

  • ¡Sí! ¡Sí! Lo que escuchó es totalmente correcto, pero aquí hay algunos ejemplos que utilizan otras tecnologías.

    • Rails: Github, Twitter (anteriormente), Shopify, Airbnb, Slideshare, Heroku, etc.
    • PHP: Facebook, Wikipedia, Flickr, Yahoo, Tumbler, Mailchimp, etc.

La conclusión es que un marco o lenguaje no hará todo por ti. Una mejor arquitectura, diseño y estrategia le dará un sitio web escalable. Instagram es el mayor ejemplo, este pequeño equipo está administrando datos tan grandes. Aquí hay un blog sobre su arquitectura que debe leerse.


Si tiene un sitio con contenido estático, poner un servidor de Varnish al frente aumentará dramáticamente su rendimiento. Incluso una sola caja puede escupir fácilmente 100 Mbit / s de tráfico.

Tenga en cuenta que con el contenido dinámico, usar algo como Varnish se vuelve mucho más complicado.


¿Cuál es el sitio "más grande" que se basa en Django hoy? (Mido el tamaño principalmente por el tráfico del usuario) Pinterest
disqus.com
Más aquí https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/

¿Puede Django tratar con 100,000 usuarios diariamente, cada uno visitando el sitio por un par de horas?
Sí, pero use la arquitectura adecuada, el diseño de la base de datos, el uso del caché, el uso de balances de carga y múltiples servidores / nods

¿Podría un sitio como Desbordamiento de pila ejecutarse en Django?
Sí, solo necesito seguir la respuesta mencionada en la segunda pregunta.


El problema es no saber si django puede escalar o no.

La forma correcta es entender y saber cuáles son los patrones de diseño de red y las herramientas que se deben colocar en su proyecto django / symfony / rails para escalar bien.

Algunas ideas pueden ser:

  • Multiplexación.
  • Proxy inverso. Ej: Nginx, Barniz
  • Sesión Memcache. Ej: Redis
  • Clusterización en su proyecto y db para equilibrio de carga y tolerancia a fallas: Ej: Docker
  • Utilice terceros para almacenar activos. Ej: Amazon S3

Espero que te ayude un poco. Esta es mi pequeña roca a la montaña.





scalability