Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get Intermediate Results from Python Client #3694

Merged
merged 39 commits into from
Apr 4, 2023
Merged
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
ecb261e
Add status + unit test (flaky) for now
freddyaboulton Mar 27, 2023
7538ad6
Install client
freddyaboulton Mar 27, 2023
9777ef2
Fix tests
freddyaboulton Mar 27, 2023
884aa9b
Lint backend + tests
freddyaboulton Mar 28, 2023
ae7cc45
Add non-queue test
freddyaboulton Mar 28, 2023
9676780
Fix name
freddyaboulton Mar 28, 2023
7279e05
Use lock instead
freddyaboulton Mar 28, 2023
6f7daa9
Add simplify implementation + fix tests
freddyaboulton Mar 29, 2023
76b0140
Restore changes to scripts
freddyaboulton Mar 29, 2023
b575e3b
Fix README typo
freddyaboulton Mar 29, 2023
1351399
Fix CI
freddyaboulton Mar 29, 2023
b29e2b0
Add intermediate results to python client
freddyaboulton Mar 29, 2023
35a1ad4
Merge main
freddyaboulton Mar 29, 2023
c1cf1a5
Merge branch 'main' into python-client-intermediate-results
freddyaboulton Mar 29, 2023
ce3a2c6
Merge branch 'main' into python-client-intermediate-results
freddyaboulton Mar 30, 2023
99dcafa
Type check
freddyaboulton Mar 30, 2023
4461c82
Typecheck again
freddyaboulton Mar 30, 2023
7bbd22d
Catch exception:
freddyaboulton Mar 30, 2023
364083c
Merge branch 'main' into python-client-intermediate-results
freddyaboulton Mar 30, 2023
d40aac1
Thinking
freddyaboulton Mar 30, 2023
b1edcb0
merge main
freddyaboulton Apr 3, 2023
c398001
Dont read generator from config
freddyaboulton Apr 3, 2023
cabcaba
add no queue test
freddyaboulton Apr 3, 2023
b63b897
Remove unused method
freddyaboulton Apr 3, 2023
49c8373
Fix types
freddyaboulton Apr 3, 2023
ee54fae
Remove breakpoint
freddyaboulton Apr 3, 2023
de2daf5
Merge branch 'main' into python-client-intermediate-results
freddyaboulton Apr 3, 2023
c6e76bb
Fix code
freddyaboulton Apr 3, 2023
6179198
Fix test
freddyaboulton Apr 3, 2023
b84ca7b
Fix tests
freddyaboulton Apr 3, 2023
a1ab535
Merge branch 'main' into python-client-intermediate-results
abidlabs Apr 4, 2023
59ed9ac
Merge branch 'main' into python-client-intermediate-results
freddyaboulton Apr 4, 2023
f7c6b31
Unpack list
freddyaboulton Apr 4, 2023
f335a37
Merge main
freddyaboulton Apr 4, 2023
4ac5598
Merge branch 'python-client-intermediate-results' of github.com:gradi…
freddyaboulton Apr 4, 2023
bb505ce
Add docstring
freddyaboulton Apr 4, 2023
4ab6b54
Merge branch 'main' into python-client-intermediate-results
abidlabs Apr 4, 2023
3564f46
Merge branch 'main' into python-client-intermediate-results
freddyaboulton Apr 4, 2023
7a3e79c
Merge upstream
freddyaboulton Apr 4, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix tests
freddyaboulton committed Mar 29, 2023
commit 9777ef2537e7c5c669f39e53ae47ce9a948f666d
4 changes: 2 additions & 2 deletions client/python/gradio_client/client.py
Original file line number Diff line number Diff line change
@@ -295,7 +295,7 @@ def __init__(self, future: Future, queue: LifoQueue | None = None):
self.future = future
self.queue = queue
self._status: StatusUpdate = StatusUpdate(
Status.SENDING_TO_EXECUTOR,
Status.STARTING,
rank=None,
queue_size=None,
success=None,
@@ -323,7 +323,7 @@ def status(self) -> StatusUpdate:
)
elif self.queue.qsize():
next_status: StatusUpdate = self.queue.get_nowait()
if self._status.status == Status.SENDING_TO_EXECUTOR:
if self._status.status == Status.STARTING:
self._status = next_status
elif next_status.time > self._status.time:
self._status = next_status
23 changes: 12 additions & 11 deletions client/python/gradio_client/utils.py
Original file line number Diff line number Diff line change
@@ -43,7 +43,7 @@ class InvalidAPIEndpointError(Exception):


class Status(Enum):
SENDING_TO_EXECUTOR = "SENDING_TO_EXECUTOR"
STARTING = "STARTING"
JOINING_QUEUE = "JOINING_QUEUE"
QUEUE_FULL = "QUEUE_FULL"
IN_QUEUE = "IN_QUEUE"
@@ -55,7 +55,7 @@ class Status(Enum):
@staticmethod
def ordering(status: "Status") -> int:
order = [
Status.SENDING_TO_EXECUTOR,
Status.STARTING,
Status.JOINING_QUEUE,
Status.QUEUE_FULL,
Status.IN_QUEUE,
@@ -108,21 +108,22 @@ def is_valid_url(possible_url: str) -> bool:


async def get_pred_from_ws(
websocket: WebSocketCommonProtocol, data: str, hash_data: str, queue: Queue
websocket: WebSocketCommonProtocol, data: str, hash_data: str, queue: Queue | None = None
) -> Dict[str, Any]:
completed = False
resp = {}
while not completed:
msg = await websocket.recv()
resp = json.loads(msg)
status_update = StatusUpdate(
status=Status.msg_to_status(resp["msg"]),
queue_size=resp.get("queue_size"),
rank=resp.get("rank", 0),
success=resp.get("success"),
time=datetime.now(),
)
queue.put_nowait(status_update)
if queue:
status_update = StatusUpdate(
status=Status.msg_to_status(resp["msg"]),
queue_size=resp.get("queue_size"),
rank=resp.get("rank", 0),
success=resp.get("success"),
time=datetime.now(),
)
queue.put_nowait(status_update)
if resp["msg"] == "queue_full":
raise QueueError("Queue is full! Please try again.")
if resp["msg"] == "send_hash":