Skip to content

Add timeouts to model-download HTTP requests - #53

Merged
dralgroup merged 1 commit into
dralgroup:mainfrom
rayair250-droid:fix/network-download-timeouts
Aug 3, 2026
Merged

Add timeouts to model-download HTTP requests#53
dralgroup merged 1 commit into
dralgroup:mainfrom
rayair250-droid:fix/network-download-timeouts

Conversation

@rayair250-droid

Copy link
Copy Markdown
Contributor

Summary

Two requests.get() calls that download model files run without a timeout, so a stalled or unresponsive server hangs the MLatom process indefinitely (no way to recover except killing it):

  • mlatom/model_cls.py:287 — downloading a model from a link (streamed).
  • mlatom/interfaces/torchani_interface.py:1937 — fetching the ANI-1xnr parameters zip from GitHub.

Fix

Add timeout=30 to both, consistent with the rest of the codebase, which already sets timeouts on its network calls (MLatom.py uses timeout=3, _update_check.py and _version.py use timeouts too).

- requests.get(link, headers=headers, stream=True, allow_redirects=True)
+ requests.get(link, headers=headers, stream=True, allow_redirects=True, timeout=30)
- resource_res = requests.get(url)
+ resource_res = requests.get(url, timeout=30)

Note: requests' timeout is a per-read inactivity limit, not a total-duration cap, so this does not abort slow-but-progressing streamed downloads — it only unblocks the process when the connection goes dead.

Two requests.get() calls that download model files had no timeout, so a
stalled or unresponsive server hangs the process indefinitely:

- model_cls.py: downloading a model from a link
- torchani_interface.py: fetching the ANI-1xnr parameters zip

Add timeout=30, consistent with the rest of the codebase, which already sets
timeouts on its network calls (MLatom.py, _update_check.py, _version.py).
requests' timeout is a per-read inactivity limit, not a total cap, so it does
not abort slow-but-progressing streamed downloads.
@dralgroup
dralgroup merged commit 50e3b86 into dralgroup:main Aug 3, 2026
@dralgroup

Copy link
Copy Markdown
Owner

thank you, released in 3.24.0 with your contribution credited in the commit history and release notes; we built on it so that a download which does not succeed is also recognized instead of being kept as if it were the model.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants