HTTP状态码200 vs 202
问题描述:
我有一个Python
+ requests
脚本。HTTP状态码200 vs 202
的步骤,脚本应该执行:
- 将文件发送到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
意味着服务器接受请求,并没有实际的请求完成
问题返回状态代码:
这是否意味着下载请求,即使可以发送请求批准尚未完成,如果是这样,如何在发送下载请求之前等待批准请求完成?
答
这取决于你的服务器实现,你的服务器决定如何处理202
。
202接受
的请求已被接受处理,但是处理还 尚未完成。该请求最终可能会或可能不会被执行,因为在处理实际发生时它可能是不允许的。 没有工具可以像这样从异步操作中重新发送状态码。
202响应是故意不提交的。它的目的是让 允许服务器接受一些其他进程的请求(可能是一个 面向批处理的进程,每天只运行一次),而不要求 要求用户代理与服务器的连接一直持续到该进程完成的 。返回的响应实体 应该包括请求当前状态的指示和 或者指向状态监视器的指针,或者用户可以期望满足请求的一些估计。
如果响应正文为空,检查应该有附加信息的响应头是有意义的。
参考 - https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
据我所知这应该是不可能的。 Response.content属性将会阻塞,直到整个响应被下载。 – user2393256