@defer.inlineCallbacks
def getZone(zone,ttl,type_,name,data):
try:
zone = yield nsone.createZone(zone,nx_ttl=ttl)
except Exception:
zone = yield nsone.loadZone(zone)
zone = getZone(zone,ttl,type_,name,data)
reactor.run()
J'essaie de créer la zone si elle n'existe pas, ou de charger la zone dans le cas contraire. Comme c'est Async tordu, je reçois des erreurs comme -Threading ou différé dans Twisted Interface
[Failure instance: Traceback (failure with no frames): <class
'twisted.internet.defer.FirstError'>: FirstError[#1, [Failure instance:
Traceback: <class 'nsone.rest.errors.ResourceException'>: server error: zone not found
Si je renverse l'ordre, je reçois -
Traceback: <class 'nsone.rest.errors.ResourceException'>: server error: zone already exists
J'utilise un try-catch car il n'y a pas de fonction pour vérifier si la zone existe dans l'API.
La question est, comment puis-je faire des fonctions correctes à appeler en fonction de la disponibilité de la zone? Je pense ajouter une sorte de thread dans ce bloc try-catch. Je n'ai pas l'expérience du multi-threading, donc je ne savais pas trop comment appeler ce problème. Merci.
Veuillez expliquer ce que sont les "zones" et indiquez où vous pensez qu'un thread ou différé devrait aller dans votre exemple. Syntaxiquement, votre exemple de code est correct, donc peut-être qu'une autre fonction, peut-être 'loadZone()', déclenche une exception. –
http://sscce.org/ –
@ notorious.no Bonjour. Zone est un objet dans la base de données que j'appelle. Je pense que le différé devrait aller dans ce bloc try-catch. loadZone et createZone fonctionnent dans un autre contexte, donc je ne pense pas que ce soit faux. Merci! – Gatsby