]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
Version 0.6.4 (#105) 0.6.4
authorTom Christie <tom@tomchristie.com>
Tue, 25 Jun 2019 12:24:12 +0000 (13:24 +0100)
committerGitHub <noreply@github.com>
Tue, 25 Jun 2019 12:24:12 +0000 (13:24 +0100)
* Read/Write timeout modes

* Read/Write timeout modes

* Tweaks for read/write timeout modes

* Version 0.6.4

* Make slow_response slower for timeout test

http3/__init__.py
http3/concurrency.py
tests/conftest.py

index 3be34560568204b4d792b3c9b51c7805a8e4e787..306af81c7cb825d2b920a0180f0f5fcca0e80b39 100644 (file)
@@ -49,4 +49,4 @@ from .models import (
 )
 from .status_codes import StatusCode, codes
 
-__version__ = "0.6.3"
+__version__ = "0.6.4"
index bd04c2da1cdca3f4121de1c6ba5314aabdbcbd3b..928efcfe103e13e7ec8920fc8ea74e0eaef00d85 100644 (file)
@@ -95,15 +95,16 @@ class Reader(BaseReader):
             timeout = self.timeout
 
         while True:
+            # Check our flag at the first possible moment, and use a fine
+            # grained retry loop if we're not yet in read-timeout mode.
             should_raise = flag is None or flag.raise_on_read_timeout
+            read_timeout = timeout.read_timeout if should_raise else 0.01
             try:
-                data = await asyncio.wait_for(
-                    self.stream_reader.read(n), timeout.read_timeout
-                )
+                data = await asyncio.wait_for(self.stream_reader.read(n), read_timeout)
                 break
             except asyncio.TimeoutError:
                 if should_raise:
-                    raise ReadTimeout()
+                    raise ReadTimeout() from None
 
         return data
 
@@ -133,9 +134,12 @@ class Writer(BaseWriter):
                 )
                 break
             except asyncio.TimeoutError:
+                # We check our flag at the possible moment, in order to
+                # allow us to suppress write timeouts, if we've since
+                # switched over to read-timeout mode.
                 should_raise = flag is None or flag.raise_on_write_timeout
                 if should_raise:
-                    raise WriteTimeout()
+                    raise WriteTimeout() from None
 
     async def close(self) -> None:
         self.stream_writer.close()
index 1d20951725e65af31fc03554f2182770ea897bd7..92b058329330f4face8c34eaa03778e8848ad56e 100644 (file)
@@ -30,7 +30,7 @@ async def hello_world(scope, receive, send):
 
 
 async def slow_response(scope, receive, send):
-    await asyncio.sleep(0.01)
+    await asyncio.sleep(0.1)
     await send(
         {
             "type": "http.response.start",