Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -16,7 +16,7 @@ DATASET_REPO_ID = os.environ.get("DATASET_REPO_ID") # Space secret
|
|
| 16 |
HF_TOKEN = os.environ["HF_TOKEN"] # Space secret
|
| 17 |
|
| 18 |
KEYS_PATH = "keys.csv"
|
| 19 |
-
|
| 20 |
|
| 21 |
|
| 22 |
api = HfApi(token=HF_TOKEN)
|
|
@@ -26,7 +26,7 @@ _lock = threading.Lock()
|
|
| 26 |
_cache = {
|
| 27 |
"ts": 0.0,
|
| 28 |
"keys": None, # type: ignore
|
| 29 |
-
"
|
| 30 |
}
|
| 31 |
CACHE_TTL_SEC = 10.0
|
| 32 |
|
|
@@ -68,7 +68,7 @@ def _parse_keys(csv_text: str) -> list:
|
|
| 68 |
})
|
| 69 |
return keys
|
| 70 |
|
| 71 |
-
def
|
| 72 |
keys = []
|
| 73 |
reader = csv.DictReader(io.StringIO(csv_text))
|
| 74 |
for r in reader:
|
|
@@ -106,18 +106,18 @@ def _serialize_b_keys(keys: list) -> str:
|
|
| 106 |
def load_state(force: bool = False):
|
| 107 |
now = time.time()
|
| 108 |
if (not force) and _cache["keys"] is not None and (now - _cache["ts"] < CACHE_TTL_SEC):
|
| 109 |
-
return _cache["keys"], _cache["
|
| 110 |
|
| 111 |
keys_csv = _download_csv(DATASET_REPO_ID, KEYS_PATH)
|
| 112 |
-
|
| 113 |
|
| 114 |
keys = _parse_keys(keys_csv)
|
| 115 |
-
|
| 116 |
|
| 117 |
_cache["ts"] = now
|
| 118 |
_cache["keys"] = keys
|
| 119 |
-
_cache["
|
| 120 |
-
return keys,
|
| 121 |
|
| 122 |
# -------------------------
|
| 123 |
# Core API
|
|
@@ -132,7 +132,7 @@ def claim_key(
|
|
| 132 |
_ = request
|
| 133 |
|
| 134 |
with _lock:
|
| 135 |
-
keys,
|
| 136 |
|
| 137 |
# Find available keys
|
| 138 |
available_keys = [k for k in keys if not k["sent"]]
|
|
@@ -165,8 +165,8 @@ def claim_b_key(
|
|
| 165 |
request: Optional[gr.Request] = None,
|
| 166 |
) -> Tuple[str, str]:
|
| 167 |
"""
|
| 168 |
-
Returns the
|
| 169 |
-
Returns (
|
| 170 |
"""
|
| 171 |
_ = request
|
| 172 |
|
|
@@ -187,7 +187,7 @@ def claim_b_key(
|
|
| 187 |
|
| 188 |
_upload_csv(
|
| 189 |
DATASET_REPO_ID,
|
| 190 |
-
|
| 191 |
updated_b_keys_csv,
|
| 192 |
commit_message=f"Key requested at {_utc_now_iso()}",
|
| 193 |
)
|
|
|
|
| 16 |
HF_TOKEN = os.environ["HF_TOKEN"] # Space secret
|
| 17 |
|
| 18 |
KEYS_PATH = "keys.csv"
|
| 19 |
+
B_KEYS_PATH = "b_keys.csv"
|
| 20 |
|
| 21 |
|
| 22 |
api = HfApi(token=HF_TOKEN)
|
|
|
|
| 26 |
_cache = {
|
| 27 |
"ts": 0.0,
|
| 28 |
"keys": None, # type: ignore
|
| 29 |
+
"b_keys": None, # type: ignore
|
| 30 |
}
|
| 31 |
CACHE_TTL_SEC = 10.0
|
| 32 |
|
|
|
|
| 68 |
})
|
| 69 |
return keys
|
| 70 |
|
| 71 |
+
def _parse_b_keys(csv_text: str) -> list:
|
| 72 |
keys = []
|
| 73 |
reader = csv.DictReader(io.StringIO(csv_text))
|
| 74 |
for r in reader:
|
|
|
|
| 106 |
def load_state(force: bool = False):
|
| 107 |
now = time.time()
|
| 108 |
if (not force) and _cache["keys"] is not None and (now - _cache["ts"] < CACHE_TTL_SEC):
|
| 109 |
+
return _cache["keys"], _cache["b_keys"]
|
| 110 |
|
| 111 |
keys_csv = _download_csv(DATASET_REPO_ID, KEYS_PATH)
|
| 112 |
+
b_keys_csv = _download_csv(DATASET_REPO_ID, B_KEYS_PATH)
|
| 113 |
|
| 114 |
keys = _parse_keys(keys_csv)
|
| 115 |
+
b_keys = _parse_b_keys(b_keys_csv)
|
| 116 |
|
| 117 |
_cache["ts"] = now
|
| 118 |
_cache["keys"] = keys
|
| 119 |
+
_cache["b_keys"] = b_keys
|
| 120 |
+
return keys, b_keys
|
| 121 |
|
| 122 |
# -------------------------
|
| 123 |
# Core API
|
|
|
|
| 132 |
_ = request
|
| 133 |
|
| 134 |
with _lock:
|
| 135 |
+
keys, _ = load_state(force=True)
|
| 136 |
|
| 137 |
# Find available keys
|
| 138 |
available_keys = [k for k in keys if not k["sent"]]
|
|
|
|
| 165 |
request: Optional[gr.Request] = None,
|
| 166 |
) -> Tuple[str, str]:
|
| 167 |
"""
|
| 168 |
+
Returns the key and increments the usage count.
|
| 169 |
+
Returns (b_key, status_message)
|
| 170 |
"""
|
| 171 |
_ = request
|
| 172 |
|
|
|
|
| 187 |
|
| 188 |
_upload_csv(
|
| 189 |
DATASET_REPO_ID,
|
| 190 |
+
B_KEYS_PATH,
|
| 191 |
updated_b_keys_csv,
|
| 192 |
commit_message=f"Key requested at {_utc_now_iso()}",
|
| 193 |
)
|