pyservernodeclient_grpc/server/server.py

70 lines
1.8 KiB
Python

from concurrent import futures
import logging
import uuid
import grpc
import sys
sys.path.append('C:/Users/user/Documents/Develop Land/grpc/NodeTest/lib/proto')
import users_pb2_grpc as pb2_grpc
import users_pb2 as pb2
users = [
{
"id": "a68b823c-7ca6-44bc-b721-fb4d5312cafc",
"name": "John Brad",
"age": 23,
"address": "Address 1",
},
{
"id": "34415c7c-f82d-4e44-88ca-ae2a1aaa92b7",
"name": "Mary Anne",
"age": 45,
"address": "Address 2",
},
]
class UserController(pb2_grpc.UserServiceServicer):
def GetAll(self,request,context):
return pb2.UserList(users=users)
def Get(self, request, context):
pass
# user.id = str(uuid.uuid4())
def Insert(self, request, context):
user = request
user.id = str(uuid.uuid4())
users.append(user)
return pb2.User(
id=user.id,
name=user.name,
age=user.age,
address=user.address
)
def Update(self, request, context):
user = [user for user in users if user['id'] == request.id][0]
user['id'] = request.id
user['name'] = request.name
user['address'] = request.address
user['age'] = request.age
return pb2.User(**user)
def Remove(self, request, context):
print(request)
index = next((i for i, user in enumerate(users) if user['id'] == request.id), -1)
del users[index]
return pb2.Empty()
def serve():
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
pb2_grpc.add_UserServiceServicer_to_server(UserController(), server)
server.add_insecure_port('[::]:50051')
server.start()
print("Server running at http://127.0.0.1:50051")
server.wait_for_termination()
if __name__ == '__main__':
logging.basicConfig()
serve()