Files
hse-2026/materials/02-communication/grpc-streaming/client/client.py
T

25 lines
886 B
Python
Raw Normal View History

2026-09-14 14:45:31 +03:00
import grpc
import os
import time
import queue_pb2
import queue_pb2_grpc
def request_generator():
for i in range(5):
yield queue_pb2.PushRequest(value=queue_pb2.Value(payload=i))
if __name__ == '__main__':
server_addr = os.getenv('SERVER_ADDR', 'localhost:51000')
with grpc.insecure_channel(server_addr) as channel:
stub = queue_pb2_grpc.QueueStub(channel)
stub.Push(queue_pb2.PushRequest(value=queue_pb2.Value(payload=100)))
response = stub.Pop(queue_pb2.PopRequest())
print(f'Pop returned payload={response.value.payload}, updated_at={response.value.updated_at.ToDatetime()}')
time.sleep(1)
stub.PushMany(request_generator())
for response in stub.Drain(queue_pb2.DrainRequest()):
print(f'Drain returned payload={response.value.payload}, updated_at={response.value.updated_at.ToDatetime()}')