Python already separates the navigation and request handler timeouts, but request_handler_timeout applies uniformly to every request: Router.handler() (src/crawlee/router.py) takes no per-route override, and SharedTimeout (src/crawlee/_utils/time.py) offers no way to extend an already-running budget. Add both, so a single route can get a larger timeout and a handler can buy more time once it knows how much work it faces.
JS implementation: apify/crawlee#3860
✍️ Drafted by Claude Code
Python already separates the navigation and request handler timeouts, but
request_handler_timeoutapplies uniformly to every request:Router.handler()(src/crawlee/router.py) takes no per-route override, andSharedTimeout(src/crawlee/_utils/time.py) offers no way to extend an already-running budget. Add both, so a single route can get a larger timeout and a handler can buy more time once it knows how much work it faces.JS implementation: apify/crawlee#3860
✍️ Drafted by Claude Code