Spaces:
Running on Zero
Running on Zero
Update app.py
Browse files
app.py
CHANGED
|
@@ -210,32 +210,33 @@ class GuiSD:
|
|
| 210 |
|
| 211 |
def load_new_model(self, model_name, vae_model, task, controlnet_model, progress=gr.Progress(track_tqdm=True)):
|
| 212 |
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
|
| 234 |
-
|
| 235 |
-
|
| 236 |
-
|
| 237 |
-
self.used_models
|
| 238 |
-
|
|
|
|
| 239 |
|
| 240 |
lock_key = model_name
|
| 241 |
|
|
|
|
| 210 |
|
| 211 |
def load_new_model(self, model_name, vae_model, task, controlnet_model, progress=gr.Progress(track_tqdm=True)):
|
| 212 |
|
| 213 |
+
if model_name != model_list[0]:
|
| 214 |
+
# --- Anti-Abuse Check Start ---
|
| 215 |
+
if model_name in self.used_models:
|
| 216 |
+
# Move to the end to mark as the most recently used (prevents it from being forgotten)
|
| 217 |
+
self.used_models.remove(model_name)
|
| 218 |
+
self.used_models.append(model_name)
|
| 219 |
+
else:
|
| 220 |
+
current_time = datetime.now()
|
| 221 |
+
# Retain history of new model requests from the last 20 minutes (1200 seconds)
|
| 222 |
+
self.new_model_history = [
|
| 223 |
+
t for t in self.new_model_history
|
| 224 |
+
if (current_time - t).total_seconds() < 1200
|
| 225 |
+
]
|
| 226 |
+
|
| 227 |
+
# Allow a maximum of 5 NEW model requests per 20 minutes
|
| 228 |
+
if len(self.new_model_history) >= 5:
|
| 229 |
+
yield "Rate limit exceeded: Too many new models requested."
|
| 230 |
+
raise gr.Error("Too many new models requested. Please reuse your previously loaded models or wait a few minutes before trying new ones.")
|
| 231 |
+
|
| 232 |
+
# Log the new model attempt
|
| 233 |
+
self.new_model_history.append(current_time)
|
| 234 |
+
self.used_models.append(model_name)
|
| 235 |
+
|
| 236 |
+
# Prevent the bypass list from growing infinitely (cap at 5 most recent models)
|
| 237 |
+
if len(self.used_models) > 5:
|
| 238 |
+
self.used_models.pop(0)
|
| 239 |
+
# --- Anti-Abuse Check End ---
|
| 240 |
|
| 241 |
lock_key = model_name
|
| 242 |
|