-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.py
64 lines (50 loc) · 2.06 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from concurrent import futures
import time
import os
import sys
import grpc
# Add the protobufs module directory to sys.path
parent_dir = os.path.dirname(os.path.abspath(__file__))
protobuf_dir = os.path.join(parent_dir, 'protobufs')
sys.path.append(protobuf_dir)
from protobufs import greet_pb2
from protobufs import greet_pb2_grpc
class GreeterServicer(greet_pb2_grpc.GreeterServicer):
def SayHello(self, request, context):
print("SayHello Request Made:")
metadata = dict(context.invocation_metadata())
print(request, metadata)
hello_reply = greet_pb2.HelloReply()
hello_reply.message = f"{request.greeting} {request.name}"
return hello_reply
def ParrotSaysHello(self, request, context):
print("ParrotSaysHello Request Made:")
print(request)
for i in range(3):
hello_reply = greet_pb2.HelloReply()
hello_reply.message = f"{request.greeting} {request.name} {i + 1}"
yield hello_reply
time.sleep(3)
def ChattyClientSaysHello(self, request_iterator, context):
delayed_reply = greet_pb2.DelayedReply()
for request in request_iterator:
print("ChattyClientSaysHello Request Made:")
print(request)
delayed_reply.request.append(request)
delayed_reply.message = f"You have sent {len(delayed_reply.request)} messages. Please expect a delayed response."
return delayed_reply
def InteractingHello(self, request_iterator, context):
for request in request_iterator:
print("InteractingHello Request Made:")
print(request)
hello_reply = greet_pb2.HelloReply()
hello_reply.message = f"{request.greeting} {request.name}"
yield hello_reply
def serve():
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
greet_pb2_grpc.add_GreeterServicer_to_server(GreeterServicer(), server)
server.add_insecure_port("localhost:50051")
server.start()
server.wait_for_termination()
if __name__ == "__main__":
serve()