Spaces:
Paused
Paused
File size: 2,010 Bytes
81bd72d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
import os
import sys
import time
from huggingface_hub import HfApi
def main():
token = os.environ.get("HF_TOKEN")
repo_id = os.environ.get("HF_SPACE_ID")
if not token or not repo_id:
print("Missing HF_TOKEN or HF_SPACE_ID env vars", file=sys.stderr)
sys.exit(1)
api = HfApi(token=token)
base_dir = os.path.dirname(__file__)
files_to_push = [
(os.path.join(base_dir, "requirements.txt"), "requirements.txt"),
(os.path.join(base_dir, "flux_pipeline.py"), "flux_pipeline.py"),
(os.path.join(base_dir, "app.py"), "app.py"),
(os.path.join(base_dir, "Dockerfile"), "Dockerfile"),
]
for local, remote in files_to_push:
if not os.path.exists(local):
print(f"Missing {local}", file=sys.stderr)
sys.exit(1)
print(f"Uploading {remote} to {repo_id}...")
api.upload_file(
path_or_fileobj=local,
path_in_repo=remote,
repo_id=repo_id,
repo_type="space",
)
print("Uploaded files. Restarting Space...")
try:
api.restart_space(repo_id=repo_id)
print("Restart triggered.")
except Exception as e:
print(f"Warning: restart_space failed: {e}")
# Poll runtime until RUNNING
print("Waiting for Space to enter RUNNING stage...")
start = time.time()
last_stage = None
while time.time() - start < 900: # up to 15 minutes
try:
rt = api.get_space_runtime(repo_id)
stage = getattr(rt, "stage", None)
if stage != last_stage:
print(f"Stage: {stage}")
last_stage = stage
if stage in ("RUNNING", "SUCCESS"):
print("Space is running.")
return
except Exception as e:
# transient errors during rebuild
pass
time.sleep(5)
print("Timeout waiting for Space to run.", file=sys.stderr)
sys.exit(2)
if __name__ == "__main__":
main()
|