web-dev-qa-db-fra.com

Pourquoi est-ce que je reçois une erreur de timeout du module de requêtes Pythons?

J'utilise requests.post(url, headers, timeout=10) et parfois j'ai reçu ReadTimeout exception HTTPSConnectionPool(Host='domain.com', port=443): Read timed out. (read timeout=10)

Étant donné que j'ai déjà défini le délai d'expiration à 10 secondes, pourquoi reçois-je toujours une exception ReadTimeout?

16
nuttynibbles

Per http://docs.python-requests.org/en/latest/user/quickstart/#timeouts , c'est le comportement attendu. Comme Royhowie l'a mentionné, enveloppez-le dans un bloc try/except (par exemple:

try:
  requests.post(url, headers, timeout=10)
except requests.exceptions.Timeout:
  print "Timeout occurred"

)

29
Foon
try:
    #defined request goes here
except requests.exceptions.ReadTimeout:
    # Set up for a retry, or continue in a retry loop

Vous pouvez l'encapsuler comme un bloc d'exception comme celui-ci. Puisque vous ne l'avez demandé que ReadTimeout. Sinon, attrapez-les tous;

try:
    #defined request goes here
except:
    # Set up for a retry, or continue in a retry loop
6
GLHF