MCPcopy Create free account
hub / github.com/CJackHwang/AIstudioProxyAPI / save_error_snapshot

Function save_error_snapshot

browser_utils/operations.py:567–672  ·  view source on GitHub ↗

Save error snapshot - enhanced version with extra context support Args: error_name: Error name used for filename generation extra_context: Extra context info to be saved as JSON file

(
    error_name: str = "error", extra_context: Optional[Dict[str, Any]] = None
)

Source from the content-addressed store, hash-verified

565
566
567async def save_error_snapshot(
568 error_name: str = "error", extra_context: Optional[Dict[str, Any]] = None
569):
570 """Save error snapshot - enhanced version with extra context support
571
572 Args:
573 error_name: Error name used for filename generation
574 extra_context: Extra context info to be saved as JSON file
575 """
576 from api_utils.server_state import state
577
578 name_parts = error_name.split("_")
579 req_id = (
580 name_parts[-1] if len(name_parts) > 1 and len(name_parts[-1]) == 7 else None
581 )
582 base_error_name = error_name if not req_id else "_".join(name_parts[:-1])
583 log_prefix = f"[{req_id}]" if req_id else "[No ReqID]"
584 page_to_snapshot = state.page_instance
585
586 if (
587 not state.browser_instance
588 or not state.browser_instance.is_connected()
589 or not page_to_snapshot
590 or page_to_snapshot.is_closed()
591 ):
592 logger.warning(
593 f"{log_prefix} Cannot save snapshot ({base_error_name}), browser/page unavailable."
594 )
595 return
596
597 logger.info(
598 f"{log_prefix} Attempting to save error snapshot ({base_error_name})..."
599 )
600 timestamp = int(time.time() * 1000)
601 error_dir = os.path.join(os.path.dirname(__file__), "..", "errors_py")
602
603 try:
604 os.makedirs(error_dir, exist_ok=True)
605 filename_suffix = f"{req_id}_{timestamp}" if req_id else f"{timestamp}"
606 filename_base = f"{base_error_name}_{filename_suffix}"
607 screenshot_path = os.path.join(error_dir, f"{filename_base}.png")
608 html_path = os.path.join(error_dir, f"{filename_base}.html")
609 context_path = os.path.join(error_dir, f"{filename_base}_context.json")
610
611 # Save screenshot
612 try:
613 await page_to_snapshot.screenshot(
614 path=screenshot_path, full_page=True, timeout=15000
615 )
616 logger.info(f"{log_prefix} Snapshot saved to: {screenshot_path}")
617 except Exception as ss_err:
618 logger.error(
619 f"{log_prefix} Failed to save screenshot ({base_error_name}): {ss_err}"
620 )
621
622 # Save HTML content
623 try:
624 content = await page_to_snapshot.content()

Callers 7

queue_workerFunction · 0.50

Calls 6

warningMethod · 0.80
infoMethod · 0.80
errorMethod · 0.80
closeMethod · 0.80
debugMethod · 0.80
writeMethod · 0.45

Tested by

no test coverage detected