我有一个服务通过 HTTP POST 接收请求,大约需要 6 分钟才能完成。
我可以在服务的日志中看到请求已完成。
我可以在我的应用程序日志中看到请求已发出并返回了有效响应。
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): lk7syrvs3a-uc.a.run.app:443
send: b'POST /?user=foobar HTTP/1.1\r\nHost: lk7syrvs3a-uc.a.run.app\r\nUser-Agent: python-requests/2.25.1\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\nContent-Length: 0\r\n\r\n'
但是请求永远保持 requests.post
,永不返回。
我的代码很简单:
def search(user):
print(f"Requesting {user}")
url = f"https://lk7syrvs3a-uc.a.run.app?user={user}"
response = requests.post(url) # THIS LINE KEEP RUNNING FOREVER
print(f"Request done {user}")
if not response.ok:
print("Error", f"{response.reason}")
return []
print(f"Done {user}")
return response.json()["result"]
这是怎么回事?
如果我在浏览器或 cURL 上运行,我会收到来自服务器的正确响应。
编辑:
使用 urllib 我可以完成这项工作。所以这是一个关于请求的错误
>>> from urllib import request
>>> n = request.Request("https://lk7syrvs3a-uc.a.run.app?user=foobar", method="POST")
>>> r = request.urlopen(n)
>>> r.read()
b'{"result ...