The httpx documentation covers the ReadTimeout you are experiencing:

HTTPX is careful to enforce timeouts everywhere by default. The default behavior is to raise a TimeoutException after 5 seconds of network inactivity. The read timeout specifies the maximum duration to wait for a chunk of data to be received (for example, a chunk of the response body). If HTTPX is unable to receive data within this time frame, a ReadTimeout exception is raised.

Try first disabling the timeout duration for reads (adapted from the example in the above link):

timeout = httpx.Timeout(10.0, read_timeout=None)
response = await httpx.get(rss, headers=headers, verify=False, timeout=timeout)

And then experiment with different timeout durations to see what is reasonable for your use-case.


EDIT: the API has been updated, parameter name has been changed from read_timeout to read:

timeout = httpx.Timeout(10.0, read=None)
Answer from ParkerD on Stack Overflow
🌐
HTTPX
python-httpx.org › advanced › timeouts
Timeouts - HTTPX
The connect timeout specifies the maximum amount of time to wait until a socket connection to the requested host is established. If HTTPX is unable to connect within this time frame, a ConnectTimeout exception is raised.
🌐
HTTPX
python-httpx.org › exceptions
Exceptions - HTTPX
Base class for all exceptions that occur at the level of the Transport API. class httpx.TimeoutException(message, *, request=None)
Discussions

python - Httpx requests timing out when it shouldn't - Stack Overflow
I have an asynchronous script that sends 1 request to different url (223 in this case) so not the same host. The problem is that after ~ 150 requests, it starts to timeout urls but when processing ... More on stackoverflow.com
🌐 stackoverflow.com
python 3.x - Strange errors with asynchronous requests - Stack Overflow
The default behavior is to raise ... The read timeout specifies the maximum duration to wait for a chunk of data to be received (for example, a chunk of the response body). If HTTPX is unable to receive data within this time frame, a ReadTimeout exception is rais... More on stackoverflow.com
🌐 stackoverflow.com
httpx.TimeoutException with o3 deepresearch and o3 pro models
I am building a demo with the o3 deepresearch model and my colleague is working on code inside our product with the o3 pro models. Earlier this week, we both started seeing httpx timeouts on every call. I’ll speak about my experience. I have a fairly straight-forward responses API call: response ... More on community.openai.com
🌐 community.openai.com
0
0
July 11, 2025
httpx does not wrap asyncio.exceptions.TimeoutError as TimeoutException
Checklist The bug is reproducible against the latest release and/or master. There are no similar issues or pull requests to fix it yet. Describe the bug httpx does not wrap asyncio.exceptions.Timeo... More on github.com
🌐 github.com
4
November 10, 2020
🌐
Gitlab
honeyryderchuck.gitlab.io › httpx › wiki › Timeouts
Timeouts - · honeyryder - GitLab
Violation of this timeout will result in a HTTPX::ConnectionTimeoutError exception, which subclasses HTTPX::TimeoutError.
🌐
OpenAI Developer Community
community.openai.com › api
httpx.TimeoutException with o3 deepresearch and o3 pro models - API - OpenAI Developer Community
July 11, 2025 - I am building a demo with the o3 deepresearch model and my colleague is working on code inside our product with the o3 pro models. Earlier this week, we both started seeing httpx timeouts on every call. I’ll speak about my experience. I have a fairly straight-forward responses API call: response = client.responses.create( model="o3-deep-research", input=input_text, instructions=instructions, timeout=7200.0, tools=[ { "type": "mcp", "server_label": "b...
🌐
GitHub
github.com › encode › httpx › issues › 1387
httpx does not wrap asyncio.exceptions.TimeoutError as TimeoutException · Issue #1387 · encode/httpx
November 10, 2020 - asyncio.exceptions.TimeoutError should be wrapped by httpx when connecting to proxies, users should not know the internal dependecies.
Author   elonzh
Find elsewhere
🌐
Reddit
reddit.com › r/learnpython › httpx requests timing out when it shouldn't.
r/learnpython on Reddit: Httpx requests timing out when it shouldn't.
April 1, 2024 -

Hello, I have an asynchronous script that sends some requests. But I have a problem. The urls times out when it should not : Here's the function

async with httpx.AsyncClient() as client:
  response = await client.get(url, follow_redirects=True, headers=headers, timeout=timeout)

where

timeout = 30

input :

https://gmail.com https://webasto.com https://unicopower.com https://bt2energy.com https://bulletev.com`
420 other urls

I get this in the logs :

2024-04-01T22:13:58.375Z Request to https://gmail.com timed out. Moving to the next url... 2024-04-01T22:13:58.739Z Request to https://webasto.com timed out. Moving to the next url... 2024-04-01T22:13:58.755Z Request to https://unicopower.com timed out. Moving to the next url... 2024-04-01T22:13:58.859Z Request to https://bt2energy.com timed out. Moving to the next url... 2024-04-01T22:13:58.862Z Request to https://bulletev.com timed out. Moving to the next url...

However, when I run the script with those urls only it works : input :

https://gmail.com https://webasto.com https://unicopower.com https://bt2energy.com https://bulletev.com

Output :

2024-04-01T22:21:58.787Z INFO  Initializing actor... 2024-04-01T22:21:58.789Z INFO  System info ({"apify_sdk_version": "1.1.5", "apify_client_version": "1.4.1", "python_version": "3.11.8", "os": "linux"}) 2024-04-01T22:21:59.091Z Processing https://bt2energy.com... 2024-04-01T22:21:59.379Z Processing https://bulletev.com... 2024-04-01T22:21:59.817Z Processing https://gmail.com... 2024-04-01T22:21:59.981Z list index out of range https://gmail.com 2024-04-01T22:21:59.983Z Processing https://unicopower.com... 2024-04-01T22:22:00.549Z Processing https://webasto.com... 2024-04-01T22:22:00.705Z INFO  Exiting actor ({"exit_code": 0})

it works. Why does those urls timeout when being processed with hundreds of other urls but when I process them seperatily it works? Note: it does that for other urls aswell

🌐
Mkdocs
mkdocs.io › encode › httpx › advanced › timeouts
HTTPX
The connect timeout specifies the maximum amount of time to wait until a socket connection to the requested host is established. If HTTPX is unable to connect within this time frame, a ConnectTimeout exception is raised.
🌐
Snyk
snyk.io › advisor › httpx › functions › httpx.exceptions.httperror
How to use the httpx.exceptions.HTTPError function in httpx | Snyk
encode / httpx / httpx / exceptions.py View on Github · class PoolTimeout(TimeoutException): """ Timeout while waiting to acquire a connection from the pool. """ class ProxyError(HTTPError): """ Error from within a proxy """ # HTTP exceptions... class ProtocolError(HTTPError): """ Malformed HTTP.
🌐
pytest_httpx
colin-b.github.io › pytest_httpx
pytest_httpx | pytest fixture to mock HTTPX
The default behavior is to instantly raise a httpx.TimeoutException in case no matching response can be found. The exception message will display the request and every registered responses to help you identify any possible mismatch.
🌐
Stack Overflow
stackoverflow.com › questions › 76525517 › python-httpx-post-request-timeout
Python HTTPX post Request timeout - Stack Overflow
with httpx.Client() as c: response = c.post(self.url, data=body, headers=SOAP_HEADER, timeout=60) return self.soap_response(response) except Exception as ex: logger.info('Error during retrieve search for car parks at %s : %s', self.url, ex) return self.soap_error(ex=ex, code=500)
🌐
GitHub
github.com › encode › httpx › issues › 1450
Overall response timeout. · Issue #1450 · encode/httpx
January 11, 2021 - In other words when request is being streamed as long as 1 byte every 2 seconds (or aprox.) is being generated the connection will not close or timeout with none of the current available settings. It's possible for the server to serve single html page almost idefinitely and hang the client thread. Maybe httpx should introduce some optional or even default handlers for this?
Author   Granitosaurus
🌐
HTTPX
python-httpx.org › troubleshooting
Troubleshooting - HTTPX
Description: When using a proxy and making an HTTPS request, you see an exception looking like this:
🌐
Lightrun
lightrun.com › answers › felix-hilden-tekore-httpxconnecttimeout
httpx.ConnectTimeout
The connect timeout specifies the maximum amount of time to wait until a socket connection to the requested host is established. If HTTPX...Read more > How can I fix ConnectTimeout exceptions from within FastAPI
🌐
GitHub
github.com › encode › httpx › issues › 832
Connect Timeout confusion · Issue #832 · encode/httpx
February 28, 2020 - except asyncio.TimeoutError: raise ConnectTimeout() What I think is strange is that, my applications are monitored with NewRelic and Microsoft Application Insights, and although they say that a request took something like 5s, I can find the request in the origin and it took just some milliseconds. So I think my question here is this: is there something in the origin application that can cause this timeout?
Author   victoraugustolls
🌐
GitHub
github.com › encode › httpx › discussions › 2055
Does timeout=None work on httpx.AsyncClient.stream? · encode/httpx · Discussion #2055
If I switch to async with httpx.AsyncClient() as client then I do get the default 5 second read timeout.
Author   encode
🌐
PyPI
pypi.org › project › pytest-httpx
pytest-httpx · PyPI
The default behavior is to instantly raise a httpx.TimeoutException in case no matching response can be found. The exception message will display the request and every registered responses to help you identify any possible mismatch.
      » pip install pytest-httpx
    
Published   Dec 02, 2025
Version   0.36.0