web-dev-qa-db-fra.com

Code d'état HTTP 200 vs 202

J'ai un script Python + requests.

Étapes que le script doit exécuter :

  • envoyer le fichier à DB;
  • approuver ce fichier (changer l'état du fichier dans la base de données);
  • télécharger un fichier.

La contrainte :

Seul le fichier approuvé a pu être téléchargé

Mon code :

requests.post(url_to_create, files={"file": open(path_to_file)})
requests.post(url_to_approve, data={'id': file_id})
requests.get(url_to_download, data={'id': file_id})

Le problème :

Ce code fonctionne presque parfaitement, mais parfois je ne reçois aucun fichier. J'ai constaté que les première et troisième demandes renvoient 200 code d'état tandis que le second renvoie 202. Si je comprends bien (dites-moi si je me trompe) état 202: Accepted signifie que le serveur accepte la demande et renvoie le code d'état sans que la demande soit terminée

La question :

Cela signifie-t-il que la demande de téléchargement peut être envoyée même si la demande d'approbation n'est pas déjà terminée et, dans l'affirmative, comment puis-je attendre la fin de la demande d'approbation avant d'envoyer la demande de téléchargement?

10
Andersson

Cela dépend de l'implémentation de votre serveur et votre serveur décide comment 202 sera traité.

202 Accepté

La demande a été acceptée pour traitement, mais le traitement n'est pas terminé. La demande pourrait éventuellement être traitée ou non, car elle pourrait être refusée lors du traitement. Il n'est pas possible de renvoyer un code d'état à partir d'une opération asynchrone comme celle-ci.

La réponse 202 est volontairement sans engagement. Son but est de permettre à un serveur d'accepter une demande pour un autre processus (peut-être un processus orienté par lots qui n'est exécuté qu'une fois par jour) sans exiger que la connexion de l'agent utilisateur au serveur persiste jusqu'à la fin du processus. L'entité renvoyée avec cette réponse DEVRAIT inclure une indication de l'état actuel de la demande et soit un pointeur vers un moniteur d'état, soit une estimation du moment où l'utilisateur peut s'attendre à ce que la demande soit satisfaite.

Si le corps de la réponse est vide, il est judicieux de vérifier les en-têtes de réponse qui doivent contenir des informations supplémentaires.

Référence - https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

15
gevorg