Je me demande s'il y a des implications sérieuses que je pourrais créer moi-même en utilisant des threads locaux. J'ai remarqué que dans le cas de Flask, they use thread locals, et mentionner qu'il peut causer des problèmes avec les serveurs qui ne sont pas construits avec des threads à l'esprit. Est-ce une préoccupation obsolète? J'utilise les locaux de fil avec Django pour un certain nombre de choses, avec le déploiement Nginx devant uwsgi ou gunicorn, sur Ubuntu 10.04 avec Postgres (pas que le système d'exploitation ou DB importance probablement, mais juste pour plus de clarté). Dois-je être inquiet?Les habitants de Thread en Python - négatifs, en ce qui concerne l'évolutivité?
Répondre
Threadlocals ne sont pas la façon la plus robuste ou sûr de faire les choses - consultez this note, par exemple. [Bien que voir également le commentaire de Glenn, ci-dessous]
Je suppose que si vous avez codé proprement, avec l'idée que vous mettez des choses dans un grand pot d'informations, en acceptant la cohérence des données non garanties dans ces locaux threaded et en prenant soin de éviter les conditions de course, etc, etc, vous pourriez bien être ok. Mais, même dans cet état d'esprit, il y a toujours la «magie» des variables locales threadées, donc documenter clairement ce qui se passe et chaque fois qu'une variable threadedlocal est utilisée pourrait vous aider/futurs développeurs de la base de code sur toute la ligne.
Cette note est tout simplement un mauvais conseil. Les variables locales thread sont une excellente solution pour des choses comme le stockage des informations de l'utilisateur actuel. Assurez-vous simplement d'effacer toutes les variables locales thread dans votre middleware d'exception. Les globals ne sont pas plus intrinsèquement mauvais que ceux de C; ils ont juste besoin d'être utilisés avec soin. –
+1 Glenn. Je suppose que c'était l'idée maîtresse de ce que je disais: faites-le avec soin, et documentez-le clairement, puis vous réduisez le risque de voir les bugs sains et saufs –
merci. J'évite les conditions de concurrence en utilisant une fonction pour obtenir des valeurs seulement dans le contexte où les intergiciels de threads locaux ont déjà été lancés. – orokusaki
- 1. En ce qui concerne BigDecimal
- 2. En ce qui concerne BigDecimal
- 3. En ce qui concerne les macros
- 4. En ce qui concerne les macros
- 5. En ce qui concerne les extstrings
- 6. En ce qui concerne ADO.Net
- 7. En ce qui concerne ADO.Net
- 8. En ce qui concerne stdio.h
- 9. En ce qui concerne java.math.BigInteger
- 10. En ce qui concerne gridview
- 11. Erreur débutant python en ce qui concerne l'importation
- 12. En ce qui concerne les threads sous Linux
- 13. En ce qui concerne interrompre la communication
- 14. en ce qui concerne l'édition d'image
- 15. En ce qui concerne jdbc Realm
- 16. En ce qui concerne script shell Unix
- 17. En ce qui concerne le téléchargement ePub?
- 18. En ce qui concerne android Développement
- 19. En ce qui concerne le double dataype
- 20. En ce qui concerne la substitution sql
- 21. En ce qui concerne 'ce' mot-clé en JavaScript
- 22. En ce qui concerne Oracle Erreur
- 23. en ce qui concerne iTunes & iPhone simulateur
- 24. En ce qui concerne UNIX Shell Script
- 25. En ce qui concerne l'objet Excel
- 26. En ce qui concerne Scroll Voir
- 27. En ce qui concerne ORA 21000
- 28. confusion en ce qui concerne la paresse
- 29. En ce qui concerne les fichiers de configuration Struts
- 30. En ce qui concerne grep dans solaris
Si vous êtes inquiet au sujet du rendement, juste vous-même référence. Je ne m'attends à aucun problème. –