我无法理解这个问题:
当我在我的IDE(Pycharm)或通过命令行运行此代码时,我得到一个204
的HTTP响应,但没有内容。当我在调试器中设置断点以查看发生了什么时,代码执行良好,并且r.content
和r.text
填充了请求结果。当在调试器中运行时,r.status_code
的值也为200
。
代码:
r = requests.post(self.dispatchurl, verify=False, auth=HTTPBasicAuth(self.user, self.passwd))
print 'first request to get sid: status {}'.format(r.status_code)
json_data = json.loads(r.text)
self.sid = json_data['sid']
print 'the sid is: {}'.format(self.sid)
self.getresulturl = '{}/services/search/jobs/{}/results{}'.format(self.url, self.sid, self.outputmode)
x = requests.get(self.getresulturl, verify=False, auth=HTTPBasicAuth(self.user, self.passwd))
print 'second request to get the data: status {}'.format(x.status_code)
print 'content: {}'.format(x.text)
通过调试器运行时的输出:
first request to get sid: status 201
the sid is: sanitizedatahere
second request to get the data: status 200
content: {"preview":false...}
Process finished with exit code 0
当我正常执行代码而不使用调试器时,第二个响应返回
204
。输出结果:
first request to get sid: status 201
the sid is: sanitizedatahere
second request to get the data: status 204
content:
Process finished with exit code 0
我猜测这可能与调试器减缓请求并允许服务器响应数据有关?这似乎是一种竞争条件。我从未在使用
requests
时遇到过这种情况。我是否做错了什么?我很无助。提前感谢您的帮助。