J'ai un programme qui récupère des informations d'autres pages et les analysera à l'aide de la magnételle et de la getpage de Twisted. Plus tard dans le programme, je imprime des informations que le processus différé crée. Actuellement, mon programme essaie de l'imprimer avant que les informations varient différente. Comment puis-je le faire attendre?
3 Réponses :
Tout d'abord, vous ne devriez pas mettre un réacteur.stop () dans votre méthode différée, car elle tue tout. P>
Maintenant, en tordu, "attendre" n'est pas autorisé. Pour imprimer les résultats de votre rappel, ajoutez simplement un autre rappel après le premier. P>
Merci, Luc! Puis-je demander où le réacteur.stop () devrait aller?
Quand j'ai dit de ne pas mettre un réacteur.stop (), je voulais dire ne pas la mettre dans ce premier code différé, car cela empêcherait tout. Donc, vous devriez le mettre dans le dernier différé (celui qui imprime les résultats) où vous êtes sûr de vouloir arrêter votre programme. Juste une note: vous devez utiliser addCallbacks (méthodory1, error_method) pour attraper les erreurs potentielles.
Regardez le didacticiel sur différé sur TwisteDMatrix.com/documents/current/core/howto / ... , en particulier la section nommée 'Callbacks peut retourner différé'.
D'accord merci! Et le seul problème que j'ai maintenant, c'est que j'accède à plusieurs sites et j'essaie d'imprimer les données dans un ordre spécifique, donc si j'ai une fonction pour chaque site, cela pourrait les imprimer en panne ...
Une autre façon cool de le faire est avec @ Defer.inlinCallbacks. Il vous permet d'écrire du code asynchrone comme une fonction séquentielle régulière: http : //Twistedmatrix.com/documents/8.1.0/api/Twisted.internet.defer.html#inlinCallbacks P>
Utilisez-vous vraiment 1 espace pour l'indentation ...
C'était un problème de formatage ici, le code actuel utilise l'onglet