Skip to content

No timeout on urlopen #85

@burkhobo

Description

@burkhobo

I'm getting a major delay here (> 30 seconds):

latest_version_per_milestone = json.load(urllib.request.urlopen(version_url))

Adding a timeout seems to solve it:

latest_version_per_milestone = json.load(urllib.request.urlopen(version_url, timeout=2))

Consider adding a timeout, otherwise, it is None!
https://stackoverflow.com/questions/29649173/what-is-the-global-default-timeout

A more robust solution could be:

def fetch_json(url: str, timeout_connect: float = 2.0, timeout_read: float = 5.0) -> dict:
    req = urllib.request.Request(url, headers={"Accept": "application/json"})
    with urllib.request.urlopen(req, timeout=timeout_connect) as resp:
        return json.loads(resp.read().decode("utf-8"))
    
latest_version_per_milestone = fetch_json(version_url)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions