@@ -146,6 +146,7 @@ async def crawl(
146146 session : Session | None = None ,
147147 proxy_info : ProxyInfo | None = None ,
148148 statistics : Statistics | None = None ,
149+ timeout : timedelta | None = None ,
149150 ) -> HttpCrawlingResult :
150151 client = self ._get_client (proxy_info .url if proxy_info else None )
151152 headers = self ._combine_headers (request .headers )
@@ -157,6 +158,7 @@ async def crawl(
157158 content = request .payload ,
158159 cookies = session .cookies .jar if session else None ,
159160 extensions = {'crawlee_session' : session if self ._persist_cookies_per_session else None },
161+ timeout = timeout .total_seconds () if timeout is not None else httpx .USE_CLIENT_DEFAULT ,
160162 )
161163
162164 try :
@@ -185,6 +187,7 @@ async def send_request(
185187 payload : HttpPayload | None = None ,
186188 session : Session | None = None ,
187189 proxy_info : ProxyInfo | None = None ,
190+ timeout : timedelta | None = None ,
188191 ) -> HttpResponse :
189192 client = self ._get_client (proxy_info .url if proxy_info else None )
190193
@@ -195,6 +198,7 @@ async def send_request(
195198 headers = headers ,
196199 payload = payload ,
197200 session = session ,
201+ timeout = httpx .Timeout (timeout .total_seconds ()) if timeout is not None else None ,
198202 )
199203
200204 try :
@@ -228,7 +232,7 @@ async def stream(
228232 headers = headers ,
229233 payload = payload ,
230234 session = session ,
231- timeout = timeout ,
235+ timeout = httpx . Timeout ( None , connect = timeout . total_seconds ()) if timeout else None ,
232236 )
233237
234238 response = await client .send (http_request , stream = True )
@@ -246,23 +250,21 @@ def _build_request(
246250 headers : HttpHeaders | dict [str , str ] | None ,
247251 payload : HttpPayload | None ,
248252 session : Session | None = None ,
249- timeout : timedelta | None = None ,
253+ timeout : httpx . Timeout | None = None ,
250254 ) -> httpx .Request :
251255 """Build an `httpx.Request` using the provided parameters."""
252256 if isinstance (headers , dict ) or headers is None :
253257 headers = HttpHeaders (headers or {})
254258
255259 headers = self ._combine_headers (headers )
256260
257- httpx_timeout = httpx .Timeout (None , connect = timeout .total_seconds ()) if timeout else None
258-
259261 return client .build_request (
260262 url = url ,
261263 method = method ,
262264 headers = dict (headers ) if headers else None ,
263265 content = payload ,
264266 extensions = {'crawlee_session' : session if self ._persist_cookies_per_session else None },
265- timeout = httpx_timeout ,
267+ timeout = timeout if timeout else httpx . USE_CLIENT_DEFAULT ,
266268 )
267269
268270 def _get_client (self , proxy_url : str | None ) -> httpx .AsyncClient :
0 commit comments