template - script python django




Est-ce que Django évolue? (20)

Je construis une application web avec Django. Les raisons pour lesquelles j'ai choisi Django étaient:

  • Je voulais travailler avec des outils libres / open-source.
  • J'aime Python et je pense que c'est un langage "à long terme", alors que par rapport à Ruby, je n'étais pas sûr, et PHP semblait être un gros problème à apprendre.
  • Je construis un prototype pour une idée et je ne pensais pas trop à l'avenir. La vitesse de développement était le facteur principal, et je connaissais déjà Python.
  • Je savais que la migration vers Google App Engine serait plus facile si je décidais de le faire à l'avenir.
  • J'ai entendu que Django était "gentil".

Maintenant que je me rapproche de la publication de mon travail, je commence à m'inquiéter de l'échelle. La seule information que j'ai trouvée sur les capacités de mise à l'échelle de Django est fournie par l'équipe Django (je ne dis rien pour les ignorer, mais ce n'est clairement pas une information objective ...).

Mes questions:

  • Quel est le "plus grand" site construit sur Django aujourd'hui? (Je mesure la taille principalement par le trafic des utilisateurs)
  • Django peut-il traiter quotidiennement avec 100 000 utilisateurs, chacun visitant le site pendant quelques heures?
  • Un site comme Stack Overflow pourrait-il fonctionner sur Django?

Quel est le "plus grand" site construit sur Django aujourd'hui? (Je mesure la taille principalement par le trafic des utilisateurs)

Aux États-Unis, Mahalo . On me dit qu'ils traitent environ 10 millions d'uniques par mois.

À l'étranger, le réseau Globo (un réseau de sites d'information, de sport et de divertissement au Brésil); Alexa les classe dans le top 100 mondial (environ 80ème actuellement).

D'autres utilisateurs notables de Django comprennent PBS, National Geographic, Discovery, NASA (en fait un certain nombre de divisions différentes au sein de la NASA), et la Bibliothèque du Congrès.

Django peut-il traiter quotidiennement avec 100 000 utilisateurs, chacun visitant le site pendant quelques heures?

Oui - mais seulement si vous avez bien écrit votre application, et si vous avez assez de matériel. Django n'est pas une balle magique.

Un site comme pourrait-il fonctionner sur Django?

Oui (mais voir ci-dessus).

Technologie-sage, facilement: voyez soclone pour une tentative. Du point de vue du trafic, concurrence moins de 1 million de visiteurs uniques par mois. Je peux nommer au moins une douzaine de sites Django avec plus de trafic que SO.


  1. "Quels sont les plus grands sites construits sur Django aujourd'hui?"

    Il n'y a pas un seul endroit qui recueille des informations sur le trafic sur les sites construits Django, donc je vais devoir y aller en utilisant des données provenant de différents endroits. Tout d'abord, nous avons une liste de sites Django sur la page d'accueil de la page principale du projet Django , puis une liste des sites construits par Django sur djangosites.org . En parcourant les listes et en en sélectionnant quelques-unes que je connais, nous avons un bon trafic:

  2. "Django peut-il traiter quotidiennement avec 100 000 utilisateurs, chacun visitant le site pendant quelques heures?"

    Oui, voir ci-dessus.

  3. "Un site comme pourrait-il fonctionner sur Django?"

    Mon intuition est oui mais, comme d'autres ont répondu et Mike Malone mentionne dans sa présentation, la conception de la base de données est essentielle. Une preuve solide pourrait également être trouvée sur www.cnprog.com si nous pouvons trouver des statistiques de trafic fiables. Quoi qu'il en soit, ce n'est pas seulement quelque chose qui arrivera en jetant ensemble un tas de modèles Django :)

Il y a, bien sûr, beaucoup plus de sites et de blogueurs intéressants, mais je dois m'arrêter quelque part!

Article de blog à propos de l' utilisation de Django pour créer un site à fort trafic michaelmoore.com décrit comme l'un des 10 000 meilleurs sites Web . Les statistiques de Quantcast et les stats de competition.com .

(*) L'auteur de l'édition, y compris une telle référence, travaillait en tant que développeur sous-traité dans ce projet.


Comme indiqué dans High Performance Django Book entrer la description du lien ici et passer par ce Cal Henderson

Voir plus de détails comme mentionné ci-dessous:

Il n'est pas rare d'entendre des gens dire que "Django n'évoluera pas". Selon la façon dont vous le regardez, l'énoncé est soit complètement vrai ou manifestement faux. Django, à lui seul, n'évoluera pas.

La même chose peut être dite de Ruby on Rails, de Flask, de PHP, ou de tout autre langage utilisé par un site web dynamique piloté par une base de données.

La bonne nouvelle, cependant, est que Django interagit magnifiquement avec une suite d'outils de mise en cache et d'équilibrage de charge qui lui permettront d'évoluer vers le plus de trafic possible.

Contrairement à ce que vous avez pu lire en ligne, il peut le faire sans remplacer les composants de base souvent étiquetés comme "trop ​​lents" tels que la base de données ORM ou la couche de template.

Disqus sert plus de 8 milliards de pages vues par mois. Ce sont des chiffres énormes.

Ces équipes ont prouvé que Django fait de l'escalade. Notre expérience ici à Lincoln Loop le soutient.

Nous avons construit de grands sites Django capables de passer la journée sur la page d'accueil de Reddit sans faire de vagues.

Les histoires à succès de Django sont presque trop nombreuses pour être répertoriées à ce stade.

Il soutient Disqus, Instagram et Pinterest. Vous voulez plus de preuves? Instagram a pu soutenir plus de 30 millions d'utilisateurs sur Django avec seulement 3 ingénieurs (dont 2 n'avaient pas de développement back-end)


Découvrez cet agrégateur de nouvelles micro appelé EveryBlock .

C'est entièrement écrit en Django. En fait, ce sont eux qui ont développé le framework Django lui-même.


J'utilise Django depuis plus d'un an et je suis très impressionné par la façon dont il parvient à combiner modularité, évolutivité et rapidité de développement. Comme avec toute technologie, il s'agit d'une courbe d'apprentissage. Cependant, cette courbe d'apprentissage est rendue beaucoup moins raide par l'excellente documentation de la communauté Django. Django a été capable de gérer très bien tout ce que je lui ai lancé. On dirait qu'il sera capable d'évoluer dans le futur.

BidRodeo Penny Auctions est un site de taille moyenne alimenté par Django. C'est un site Web très dynamique qui gère un bon nombre de pages vues par jour.


Je développe des sites à fort trafic en utilisant Django pour le radiodiffuseur national en Irlande. Cela fonctionne bien pour nous. Développer un site performant, c'est plus que choisir un framework. Un cadre ne sera qu'une partie d'un système aussi fort que son maillon le plus faible. L'utilisation du dernier framework 'X' ne résoudra pas vos problèmes de performances si le problème concerne des requêtes de base de données lentes ou un serveur ou un réseau mal configuré.


Je pense que nous pourrions aussi bien ajouter l'App de l'année d'Apple pour 2011, Instagram , à la liste qui utilise intensivement django.


Je suis sûr que vous cherchez une réponse plus solide, mais la validation objective la plus évidente que je puisse penser est que Google pousse Django à l'utiliser avec son framework App Engine . Si quelqu'un connaît et traite régulièrement de l'évolutivité, c'est Google. D'après ce que j'ai lu, le facteur le plus limitant semble être le back-end de la base de données, ce qui explique pourquoi Google utilise leur propre ...


La mise à l'échelle des applications Web ne concerne pas les cadres Web ou les langues, mais votre architecture. Il s'agit de la façon dont vous gérez votre cache de navigateur, votre cache de base de données, comment vous utilisez les fournisseurs de persistance non standard (comme CouchDB ), comment votre base de données est-elle réglée et bien d'autres choses ...

Ne t'embête pas ...



Même s'il y a eu beaucoup de bonnes réponses ici, j'ai juste envie de faire remarquer que personne n'a mis l'accent sur ...

Cela dépend de l'application

Si votre application est légère sur les écritures, comme vous lisez beaucoup plus de données de la base de données que vous écrivez. Ensuite, la mise à l'échelle de django devrait être assez triviale, mais il est livré avec une mise en cache de sortie / vue assez décente tout de suite. Faites-en usage, et dites, redis en tant que fournisseur de cache, placez un équilibreur de charge devant lui, lancez n-instances et vous devriez être en mesure de faire face à une très grande quantité de trafic.

Maintenant, si vous devez faire des milliers d'écritures complexes une seconde? Histoire différente. Django va-t-il être un mauvais choix? Eh bien, pas nécessairement, dépend de la façon dont vous concevez votre solution vraiment, et aussi, quelles sont vos exigences.

Juste mes deux cents :-)


Mon expérience avec Django est minime, mais je me souviens du Livre Django où ils ont un chapitre où ils interviewent des gens qui exécutent certaines des plus grandes applications de Django. Voici un lien. Je suppose que cela pourrait fournir quelques idées.

Il indique que curse.com est l'une des plus grandes applications de Django avec environ 60-90 millions de pages vues dans un mois.


Nous faisons des tests de charge maintenant. Nous pensons pouvoir supporter 240 requêtes simultanées (un taux soutenu de 120 hits par seconde 24x7) sans dégradation significative des performances du serveur. Ce serait 432 000 visites par heure. Les temps de réponse ne sont pas petits (nos transactions sont importantes), mais notre performance de base ne subit aucune dégradation à mesure que la charge augmente.

Nous utilisons Django et MySQL Apache frontal. Le système d'exploitation est Red Hat Enterprise Linux (RHEL). 64 bits. Nous utilisons mod_wsgi en mode démon pour Django. Nous n'avons fait aucune optimisation de cache ou de base de données autre que pour accepter les valeurs par défaut.

Nous sommes tous dans une VM sur un Dell 64 bits avec (je pense) 32 Go de RAM.

Puisque la performance est presque la même pour 20 ou 200 utilisateurs simultanés, nous n'avons pas besoin de passer beaucoup de temps à peaufiner. Au lieu de cela, nous avons simplement besoin de maintenir nos performances de base grâce à des améliorations de performances SSL ordinaires, à la conception et à l'implémentation ordinaires de bases de données (indexation, etc.), aux améliorations de performances du pare-feu ordinaire, etc.

Ce que nous mesurons, c'est que nos ordinateurs portables de test de charge se débattent sous la charge de travail insensée de 15 processus exécutant 16 threads simultanés de demandes.


Oui il peut. Ce pourrait être Django avec Python ou Ruby on Rails. Ça va encore évoluer.

Il y a peu de techniques différentes. Premièrement, la mise en cache n'est pas mise à l'échelle. Vous pourriez avoir plusieurs serveurs d'applications équilibrés avec nginx en tant qu'avant, en plus des équilibreurs de matériel. Pour mettre à l'échelle sur le côté de la base de données, vous pouvez aller assez loin avec l'esclave de lecture dans MySQL / PostgreSQL si vous allez le chemin RDBMS.

Certains bons exemples de sites web de trafic lourd dans Django pourraient être:

  • Pownce quand ils étaient encore là.
  • Discus (gestionnaire de commentaires partagés génériques)
  • Tous les sites Web liés aux journaux: Washington Post et autres.

Vous pouvez vous sentir en sécurité.


Répartir les tâches uniformément, en optimisant chaque aspect, y compris les bases de données, fichiers, images, CSS, etc. et équilibrer la charge avec plusieurs autres ressources est nécessaire une fois que votre site / application commence à croître. OU vous faites plus d'espace pour qu'il grandisse. Mise en œuvre des dernières technologies comme CDN, Cloud sont incontournables avec d'énormes sites. Juste le développement et l'ajustement d'une application ne donnera pas votre satisfaction de cent pour cent, d'autres composants jouent également un rôle important.


Si vous avez un site avec du contenu statique, alors mettre un serveur Varnish à l'avant augmentera considérablement vos performances. Même une seule boîte peut facilement cracher 100 Mbit / s de trafic.

Notez qu'avec du contenu dynamique, utiliser quelque chose comme Varnish devient beaucoup plus délicat.


Si vous voulez utiliser Open source, il y a beaucoup d'options pour vous. Mais python est le meilleur parmi eux, il a beaucoup de bibliothèques et une communauté super géniale. Ce sont des raisons qui pourraient changer d'avis:

  • Python est très bon mais c'est un langage interprété qui le rend lent. Mais de nombreux services d'accélérateur et de mise en cache sont là qui résolvent partiellement ce problème.

  • Si vous songez à un développement rapide, alors Ruby on Rails est le meilleur parmi tous. La devise principale de ce cadre (ROR) est de donner une expérience confortable aux développeurs. Si vous comparez Ruby et Python, les deux ont presque les mêmes syntaxes.

  • Google App Engine est un très bon service mais il vous lie dans sa portée, vous n'avez pas la chance d'expérimenter de nouvelles choses. Au lieu de cela, vous pouvez utiliser le cloud Digital Ocean qui ne prendra que 5 $ par mois pour sa gouttelette la plus simple. Heroku est un autre service gratuit où vous pouvez déployer votre produit.

  • Oui! Oui! Ce que vous avez entendu est totalement correct mais voici quelques exemples qui utilisent d'autres technologies

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

La conclusion est un cadre ou une langue ne fera pas tout pour vous. Une meilleure architecture, conception et stratégie vous donnera un site Web évolutif. Instagram est le plus grand exemple, cette petite équipe gère des données aussi importantes. Voici un blog sur son architecture qui doit le lire.


Un autre exemple est rasp.yandex.ru, service d'horaires de transport russe. Sa présence satisfait vos besoins.



Quel est le "plus grand" site construit sur Django aujourd'hui? (Je mesure la taille principalement par le trafic des utilisateurs) Pinterest
disqus.com
Plus ici https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/

Django peut-il traiter quotidiennement avec 100 000 utilisateurs, chacun visitant le site pendant quelques heures?
Oui, mais utilisez une architecture, une conception de base de données, une utilisation du cache appropriées, utilisez des balances de charge et plusieurs serveurs / hochements de tête

Un site comme pourrait-il fonctionner sur Django?
Oui, juste besoin de suivre la réponse mentionnée dans la 2ème question





scalability