Files
homelab_gamevault/statekeeper.py
Yannik Schmidt df3ea69efb wip: http backend with callbacks
..currently all callbacks are executed non-async for testing
..they may be bugs with async downloads not correctly being waited for
..there may be problems with binding changing variables correctly
2025-01-13 22:47:28 +01:00

31 lines
908 B
Python

import requests
import os
def add_to_download_queue(url, path):
'''The download is added to the global queue and downloaded eventually'''
_download(url, path)
def add_to_task_queue(task):
'''Add a callback to background execution queue'''
print("Executing tasks", task)
task()
def _download(url, path):
response = requests.get(url + "?path=" + path, stream=True)
# Check if the request was successful
if response.status_code == 200:
# Save the file locally
local_filename = os.path.join("./cache", path)
with open(local_filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192): # Download in chunks
f.write(chunk)
print(f"File downloaded successfully as {local_filename}")
else:
raise AssertionError("Non-200 Response for:", url, path, response.status_code, response.text)