Si je lis la documentation de django, seuls les documents concernant les balises de gabarit mentionnent le danger potentiel de la sécurité des threads.Django et la sécurité des threads
Cependant, je suis curieux de savoir ce genre de choses que je dois faire/éviter d'écrire du code thread-safe dans Django ...
Un exemple est, j'ai la fonction suivante config les enregistreurs utilisés dans django.
_LOGGER_CONFIGURED = False
def config_logger():
global _LOGGER_CONFIGURED
if _LOGGER_CONFIGURED: return
_LOGGER_CONFIGURED = True
rootlogger = logging.getLogger('')
stderr_handler = StreamHandler(sys.stderr)
rootlogger.addHandler(stderr_handler)
et à la fin de mon URLconf racine, j'ai l'appel de la fonction suivante:
config_logger()
La question est:
Est-ce threadsafe code? Quels types de variables sont partagés entre les threads django?
Vous voulez dire le danger potentiel de l'insécurité de fil: p – Edmund
Je pense qu'il y a des endroits potentiels pour l'insécurité de fil (certains d'entre eux sont pointés par des personnes). -urlresolver utilise un dictionnaire modifiable globalement, et cet objet peut être mis dans un état indéterminé si des requêtes simultanées se produisent au démarrage du serveur. -plusieurs classes de formes et de champs django ont des compteurs globaux ... je ne sais pas comment ils sont utilisés, mais il ne semble pas que l'accès à ceux-ci ne soit pas protégé par des mutex. Je suppose que cela peut être potentiellement dangereux. –