J'ai du mal à comprendre comment les signaux travaillent dans ma demande (et comment ils fonctionnent la période). Ce sont trois domaines où je suppose qu'ils s'appliqueraient (avec mes connaissances actuelles): p>
Suis-je totalement hors base (je sens que je pourrais être).
4 Réponses :
Les signaux Django sont un moyen d'effectuer une action Dans un monde irréel, vous pouvez éviter d'utiliser des signaux en modifiant le code lorsque l'événement Le problème est que cela fait de la maintenabilité, de la lisibilité et de nombreux autres adjectifs d'ingénierie logicielle :) p>
Les signaux vous permettent de faire la même chose indpostence à partir de l'endroit ou de la façon dont l'événement Oui, je pense que dire que dire que des signaux sont utiles pour permettre (Vous avez également mentionné Multi threading. Si vous l'avez fait, parce que vous pensez que les signaux sont bons parce qu'ils sont exécutés simultanément et si vite ... bien ... je ne sais pas si elles sont exécutées simultanément mais de toute façon je n'ai vraiment pas Il faut que ce soit le point pour quels signaux Django sont utiles pour) p>
Un exemple de bon moyen de tirer parti des signaux concerne le fait que lorsque vous souhaitez stocker d'autres informations à un utilisateur de Django, vous devez utiliser UserProfiles.
Dans ce cas, le Documentation elle-même a >, vous dire qu'il peut être pratique d'enregistrer un signal en réponse à toute création de nouveaux utilisateurs simplement pour ajouter aux nouveaux utilisateurs créés un profil d'utilisateur vide. P> A code> en réponse à un événement
E code>. p>
E code> se produit et en ajoutant le code pour effectuer l'action
a p>. p>.
E code> se produit et ce fais ainsi de manière intelligente qui permet de maintenir la maintenabilité, la lisibilité, etc. p>
Les signaux Django sont définitivement expédiés de manière synchrone.
@Ignacio Mon intention N'était de ne pas dire que les signaux sont exécutés simultanément, mais juste pour essayer d'imaginer pourquoi la multi-threading a été mentionnée dans la question ... Je ne savais pas comment ils ont été manipulés. Maintenant oui. Merci Ignacio;)
Considéreriez-vous les 3 tâches de ma liste en tant que bons candidats à effectuer via des signaux?
La raison pour laquelle j'ai mentionné Multi threading n'est pas pour la prestation de concurrence, mais plutôt pour le cas où l'utilisateur voit la page "Merci" et c'est fait le chargement, mais les choses se passent toujours sur le serveur. Est-ce possible?
Tâche 1, pas vraiment. Il suffit de mettre le code pour le télécharger après le code de la transaction. Tâche 2, bien sûr. Mais vous serez peut-être mieux à l'excès d'agriculture à un processus séparé. Tâche 3, éventuellement, bien que l'utilisation du mot "Supprimer" dans une tâche puisse conduire à Code Racy s'il n'est pas fait correctement.
@orokusaki: Pas directement via des signaux, car les signaux sont expédiés de manière synchrone. Au lieu d'envoyer le traitement à un autre processus.
@orokusaki, je pense que les tâches 2 et 3 sont de bons candidats à effectuer via des signaux. Peut-être que dans la tâche 2, vous pouvez passer beaucoup de temps pour le téléchargement, car les signaux sont exécutés de manière synchrone, vous pouvez envisager de le faire de manière asynchrone à partir de la demande (sinon l'utilisateur doit également être téléchargé sur S3). ... Cela peut dépendre de la taille de ces images. En ce qui concerne la première tâche ... Eh bien, je n'ai pas compris ce que cela devrait faire ...
Voici un exemple qui peut aider. P>
Supposons que vous ayez besoin d'effectuer une certaine action lorsqu'une instance de modèle est enregistrée. Cependant, cette action n'a rien à voir avec le modèle ou l'instance de modèle elle-même. Par conséquent, il est peu détecté de mettre le code de votre action dans une méthode Sauvegarder () sur le modèle. Cela causerait un couplage de code inutile et un encombrement. Au lieu de cela, vous pouvez créer un gestionnaire de signal ailleurs dans votre application (ou même dans une autre application) où il a plus de sens. P>
J'effectueriez des tâches 2 et 3 (les images) avec quelque chose comme une file d'attente asynchrone de tâches, comme céleri < / p>
C'est semblable à la multithreading. p>
C'est pourquoi ils sont C'est mieux travailleurs de céleri pouvant faire des opérations à long terme de manière très asynchrone. p>
Ces cas et quelques exemples pour eux, vous pouvez trouver dans ce sujet A >. p>
Mais ils sont toujours utiles dans quelques scénarios limités h3>
Je ne comprends pas votre référence à Multi Filetage. À quoi ça sert?
@Andrea Zilio Voir les commentaires sur la réponse 1