sglang
sglang copied to clipboard
Add Default Timeout to urllib.request.urlopen Calls to Prevent Potential Hanging
The current implementation of HTTP requests in the code utilizes urllib.request.urlopen
without specifying a default timeout. This approach can lead to potential hanging of the application if the server does not respond or if the network is experiencing issues.
Code Snippet:
# add the API Key header if an API key is provided
if api_key is not None:
headers["X-API-Key"] = api_key
if stream:
return requests.post(url, json=json, stream=True, headers=headers)
else:
req = urllib.request.Request(url, headers=headers)
if json is None:
data = None
else:
data = bytes(dumps(json), encoding="utf-8")
resp = urllib.request.urlopen(req, data=data, cafile=verify)
return HttpResponse(resp)
To mitigate this risk, I propose adding an optional timeout argument to the function(s) that wrap urllib.request.urlopen calls. This argument would allow developers to specify a custom timeout, with a sensible default set to ensure that no call hangs indefinitely.