Spaces:
Running
Running
Update app/app.py
Browse files- app/app.py +14 -15
app/app.py
CHANGED
|
@@ -63,25 +63,24 @@ class RequestQueue:
|
|
| 63 |
|
| 64 |
queued_request = QueuedRequest(request_id, question, datetime.now())
|
| 65 |
|
| 66 |
-
#
|
| 67 |
-
if not self.processing and not self.queue:
|
| 68 |
-
self.processing = queued_request
|
| 69 |
-
queued_request.status = "processing"
|
| 70 |
-
return {
|
| 71 |
-
"status": "processing",
|
| 72 |
-
"message": "Your request is being processed now.",
|
| 73 |
-
"queue_position": 0,
|
| 74 |
-
"estimated_wait_time": "0-2 minutes"
|
| 75 |
-
}
|
| 76 |
-
|
| 77 |
-
# Add to queue
|
| 78 |
self.queue.append(queued_request)
|
| 79 |
-
position = len(self.queue)
|
| 80 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
|
| 82 |
return {
|
| 83 |
"status": "queued",
|
| 84 |
-
"message":
|
| 85 |
"queue_position": position,
|
| 86 |
"estimated_wait_time": estimated_wait
|
| 87 |
}
|
|
|
|
| 63 |
|
| 64 |
queued_request = QueuedRequest(request_id, question, datetime.now())
|
| 65 |
|
| 66 |
+
# Always enqueue; the background worker is the single executor
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
self.queue.append(queued_request)
|
| 68 |
+
position = len(self.queue) # 1-based position in queue
|
| 69 |
+
|
| 70 |
+
# Compute an ETA that reflects whether something is currently processing
|
| 71 |
+
# ahead_of_you = (1 if a job is currently processing else 0) + (position - 1 already queued ahead)
|
| 72 |
+
ahead_of_you = (1 if self.processing else 0) + (position - 1)
|
| 73 |
+
# Each slot ~2 minutes based on your heuristic
|
| 74 |
+
estimated_wait = f"{ahead_of_you * 2}-{(ahead_of_you + 1) * 2} minutes"
|
| 75 |
+
|
| 76 |
+
message = (
|
| 77 |
+
"Using free CPU tier - can only process one request at a time. "
|
| 78 |
+
f"Your request is #{position} in queue and will be processed after current requests are completed."
|
| 79 |
+
)
|
| 80 |
|
| 81 |
return {
|
| 82 |
"status": "queued",
|
| 83 |
+
"message": message,
|
| 84 |
"queue_position": position,
|
| 85 |
"estimated_wait_time": estimated_wait
|
| 86 |
}
|