Skip to content

ontocast.cli.serve

calculate_recursion_limit(max_visits, head_chunks=None)

Calculate the recursion limit based on max_visits and head_chunks.

Parameters:

Name Type Description Default
max_visits int

Maximum number of visits allowed per node

required
head_chunks Optional[int]

Optional maximum number of chunks to process

None

Returns:

Name Type Description
int int

Calculated recursion limit

Source code in ontocast/cli/serve.py
def calculate_recursion_limit(
    max_visits: int, head_chunks: Optional[int] = None
) -> int:
    """Calculate the recursion limit based on max_visits and head_chunks.

    Args:
        max_visits: Maximum number of visits allowed per node
        head_chunks: Optional maximum number of chunks to process

    Returns:
        int: Calculated recursion limit
    """
    base_recursion_limit = int(os.getenv("RECURSION_LIMIT", 1000))
    estimated_chunks = int(os.getenv("ESTIMATED_CHUNKS", 30))
    if head_chunks is not None:
        # If we know the number of chunks, calculate exact limit
        return max(base_recursion_limit, max_visits * head_chunks * 10)
    else:
        # If we don't know chunks, use a conservative estimate
        return max(base_recursion_limit, max_visits * estimated_chunks * 10)