HTTP状态代码200与202

时间:2016-07-14 12:19:14

标签: python http python-requests http-status-codes

我有一个Python + requests脚本。

脚本应执行的步骤

  • 将文件发送到DB;
  • 批准此文件(在DB中更改文件状态);
  • 下载文件。

约束

只能下载已批准的文件

我的代码

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})

问题

这段代码几乎完美无缺,但有时候我没有文件。我发现第一个和第三个请求返回200状态代码,而第二个请求返回202。据我所知(告诉我,如果我错了)状态202: Accepted表示服务器接受请求并返回状态代码而没有实际请求完成

问题

这是否意味着即使请求批准尚未完成也可以发送下载请求,如果是,那么在发送下载请求之前我怎么能等到批准请求完成?

1 个答案:

答案 0 :(得分:11)

这取决于您的服务器实施,您的服务器决定如何处理202

  

202接受

     

已接受请求进行处理,但处理已完成   尚未完成。该请求最终可能会或可能不会被采取行动   因为它可能在处理实际发生时被禁止。   没有从异步中重新发送状态代码的工具   这样的操作。

     

202回复是故意不承诺的。其目的是为了   允许服务器接受某个其他进程的请求(也许是   没有的批处理过程,每天只运行一次   要求用户代理与服务器的连接一直持续到   这个过程完成了。该实体返回此响应   应该包括请求的当前状态和指示   指向状态监视器的指针或用户何时估计   可以期待请求得到满足。

如果响应正文为空,那么检查应该包含其他信息的响应标头是有意义的。

参考 - https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html