47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
|
|
from concurrent import futures
|
|||
|
|
import grpc
|
|||
|
|
import time
|
|||
|
|
|
|||
|
|
from grpc_proto.check_grpc import check_grpc_pb2_grpc, check_grpc_pb2
|
|||
|
|
|
|||
|
|
|
|||
|
|
class TaskServiceServicer(check_grpc_pb2_grpc.TaskServiceServicer):
|
|||
|
|
def ProcessTask(self, request, context):
|
|||
|
|
print(f"Received task_id: {request.task_id}")
|
|||
|
|
|
|||
|
|
return check_grpc_pb2.TaskResponse(
|
|||
|
|
task_id=request.task_id,
|
|||
|
|
success=True,
|
|||
|
|
message="Task processed successfully"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
|
|||
|
|
class HealthCheckServicer(check_grpc_pb2_grpc.HealthCheckServicer):
|
|||
|
|
def Check(self, request, context):
|
|||
|
|
# 简单实现:总是返回SERVING状态
|
|||
|
|
# 实际应用中可以根据服务状态返回不同值
|
|||
|
|
return check_grpc_pb2.HealthCheckResponse(
|
|||
|
|
status=check_grpc_pb2.HealthCheckResponse.ServingStatus.SERVING
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def serve():
|
|||
|
|
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
|
|||
|
|
|
|||
|
|
# 添加服务实现
|
|||
|
|
check_grpc_pb2_grpc.add_TaskServiceServicer_to_server(TaskServiceServicer(), server)
|
|||
|
|
check_grpc_pb2_grpc.add_HealthCheckServicer_to_server(HealthCheckServicer(), server)
|
|||
|
|
|
|||
|
|
server.add_insecure_port('[::]:50051')
|
|||
|
|
server.start()
|
|||
|
|
print("Server started, listening on port 50051...")
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
while True:
|
|||
|
|
time.sleep(86400) # 保持运行
|
|||
|
|
except KeyboardInterrupt:
|
|||
|
|
server.stop(0)
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
serve()
|