22import logging
33import warnings
44from collections import defaultdict
5+ from contextlib import suppress
56from time import time
67from typing import Callable , Dict , Optional , Type , TypeVar
78from urllib .parse import urlparse
@@ -65,9 +66,12 @@ def __init__(self, crawler: Crawler) -> None:
6566
6667 self .browser_type : str = crawler .settings .get ("PLAYWRIGHT_BROWSER_TYPE" ) or "chromium"
6768 self .launch_options : dict = crawler .settings .getdict ("PLAYWRIGHT_LAUNCH_OPTIONS" ) or {}
68- self .default_navigation_timeout : Optional [int ] = (
69- crawler .settings .getint ("PLAYWRIGHT_DEFAULT_NAVIGATION_TIMEOUT" ) or None
70- )
69+ self .default_navigation_timeout : Optional [float ] = None
70+ if "PLAYWRIGHT_DEFAULT_NAVIGATION_TIMEOUT" in crawler .settings :
71+ with suppress (TypeError , ValueError ):
72+ self .default_navigation_timeout = float (
73+ crawler .settings .get ("PLAYWRIGHT_DEFAULT_NAVIGATION_TIMEOUT" )
74+ )
7175
7276 default_context_kwargs : dict = {}
7377 if "PLAYWRIGHT_CONTEXT_ARGS" in crawler .settings :
@@ -115,7 +119,7 @@ async def _create_browser_context(self, name: str, context_kwargs: dict) -> Brow
115119 context .on ("close" , self ._make_close_browser_context_callback (name ))
116120 logger .debug ("Browser context started: '%s'" , name )
117121 self .stats .inc_value ("playwright/context_count" )
118- if self .default_navigation_timeout :
122+ if self .default_navigation_timeout is not None :
119123 context .set_default_navigation_timeout (self .default_navigation_timeout )
120124 return context
121125
@@ -132,7 +136,7 @@ async def _create_page(self, request: Request) -> Page:
132136 page .on ("request" , _make_request_logger (context_name ))
133137 page .on ("request" , self ._increment_request_stats )
134138 self .stats .inc_value ("playwright/page_count" )
135- if self .default_navigation_timeout :
139+ if self .default_navigation_timeout is not None :
136140 page .set_default_navigation_timeout (self .default_navigation_timeout )
137141 return page
138142
0 commit comments