When using create_isolated_context=False with concurrent crawls, multiple tasks would reuse the same page (pages[0]) causing navigation race conditions and "Page.content: Unable to retrieve content because the page is navigating" errors. Changes: - Add _pages_in_use set to track pages currently being used by crawls - Rewrite get_page() to only reuse pages that are not in use - Create new pages when all existing pages are busy - Add release_page() method to release pages after crawl completes - Update cleanup paths to release pages before closing This maintains context sharing (cookies, localStorage) while ensuring each concurrent crawl gets its own isolated page for navigation. Includes integration tests verifying: - Single and sequential crawls still work - Concurrent crawls don't cause race conditions - High concurrency (10 simultaneous crawls) works - Page tracking state remains consistent
16 KiB
16 KiB