This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from pyppeteer import launch
|
||||
from app.config import CUSTOM_USER_AGENT
|
||||
import asyncio
|
||||
|
||||
async def wait_for_network_idle(page):
|
||||
"""Wait until no network requests are in flight"""
|
||||
@@ -8,6 +9,7 @@ async def wait_for_network_idle(page):
|
||||
async def safe_browser_operation(url, operation_func):
|
||||
"""Safely perform browser operations with proper cleanup"""
|
||||
browser = None
|
||||
page = None
|
||||
try:
|
||||
browser = await launch(
|
||||
headless=True,
|
||||
@@ -28,12 +30,24 @@ async def safe_browser_operation(url, operation_func):
|
||||
# Call the operation function that uses the page
|
||||
result = await operation_func(page)
|
||||
|
||||
# Explicitly close the page
|
||||
await page.close()
|
||||
|
||||
return result
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error during browser operation: {e}")
|
||||
# Return error result instead of re-raising to allow graceful handling
|
||||
return {
|
||||
"status": "error",
|
||||
"error": str(e),
|
||||
"url": url
|
||||
}
|
||||
finally:
|
||||
# Ensure page is closed properly
|
||||
if page:
|
||||
try:
|
||||
await page.close()
|
||||
except Exception as e:
|
||||
print(f"Error closing page: {e}")
|
||||
|
||||
# Ensure browser is closed properly
|
||||
if browser:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user