Attendre pour le succès de la réponse de l'Appel d'API

Je suis en utilisant des Api Yahoo, j'ai mis en œuvre aléatoire de la méthode sleep en plus de cela, j'ai ajouté dur dort encore, mais je suis incapable de comprendre comment je peux juste attendre ou essayer de nouveau si je ne reçois pas une réponse à la première tentative.

Pour un exemple du code que j'ai mis ci-dessous, ne parvient pas à certains utilisateurs, totalement au hasard. Suite à l'échec je prends l'url dans mon navigateur et il fonctionne comme un charme. Donc ma questions est: pourquoi? et Comment puis-je résoudre ce problème? ou puis-je améliorer ce code pour faire une autre demande après une dure de sommeil (Seulement si c'est une bonne approche)

J'ai quelques informations qui j'ai oublié d'ajouter, j'ai changé le code pour obtenir mon http code de réussite:

print urlobject.getcode()

et il retourne à 200, mais pas de json, comme certains l'ont suggéré que ce pourrait être l'accélérateur.

Note: j'ai supprimé mon appid(Clé) à partir de l'url

# return the json question for given question id
def returnJSONQuestion(questionId):
    randomSleep()
    url = 'http://answers.yahooapis.com/AnswersService/V1/getQuestion?appid=APPIDREMOVED8&question_id={0}&output=json'
    format_url = url.format(questionId)
    try:
        request = urllib2.Request(format_url)
        urlobject = urllib2.urlopen(request)
        time.sleep(10)
        jsondata = json.loads(urlobject.read().decode("utf-8"))
        print jsondata
    except urllib2.HTTPError, e:
        print e.code
        logging.exception("Exception")
    except urllib2.URLError, e:
        print e.reason
        logging.exception("Exception")
    except(json.decoder.JSONDecodeError,ValueError):
        print 'Question ID ' + questionId + ' Decode JSON has failed'
        logging.info("This qid didn't work " + questionId)
    return jsondata
  • Ce serait formidable, si vous allez ajouter l'exact du message d'échec de l'
  • WOW Merci pour les nombreuses FANTASTIQUE bonnes réponses!. Je vais essayer un de mettre en œuvre l'un de ceux et de voir. Je n'ai aucune idée de la réponse, je devrait choisir ils sont tous brillamment expliqué plein d'espoir à tous les votes.