def read(self) -> bytes:
return asyncio_run(self._response.read())
+ def stream(self) -> typing.Iterator[bytes]:
+ inner = self._response.stream()
+ while True:
+ try:
+ yield asyncio_run(inner.__anext__())
+ except StopAsyncIteration as exc:
+ break
+
class SyncClient:
def __init__(self, client: Client):
with httpcore.SyncConnectionPool() as http:
response = http.request("POST", "http://127.0.0.1:8000/", body=b"Hello, world!")
assert response.status_code == 200
+
+
+@threadpool
+def test_stream_response(server):
+ with httpcore.SyncConnectionPool() as http:
+ response = http.request("GET", "http://127.0.0.1:8000/", stream=True)
+ assert response.status_code == 200
+ assert not hasattr(response, "body")
+ body = response.read()
+ assert body == b"Hello, world!"
+
+
+@threadpool
+def test_stream_iterator(server):
+ with httpcore.SyncConnectionPool() as http:
+ response = http.request("GET", "http://127.0.0.1:8000/", stream=True)
+ assert response.status_code == 200
+ body = b''
+ for chunk in response.stream():
+ body += chunk
+ assert body == b"Hello, world!"