from concurrent import futures import random import grpc from recommendations_pb2 import ( BookCategory, BookRecommendation, RecommendationResponse, ) import recommendations_pb2_grpc books_by_category = { BookCategory.MYSTERY: [ BookRecommendation(id=1, title="The Maltese Falcon"), BookRecommendation(id=2, title="Murder on the Orient Express"), BookRecommendation(id=3, title="The Hound of the Baskervilles"), ], BookCategory.SCIENCE_FICTION: [ BookRecommendation(id=4, title="The Hitchhiker's Guide to the Galaxy"), BookRecommendation(id=5, title="Ender's Game"), BookRecommendation(id=6, title="The Dune Chronicles"), ], BookCategory.SELF_HELP: [ BookRecommendation(id=7, title="The 7 Habits of Highly Effective People"), BookRecommendation(id=8, title="How to Win Friends and Influence People"), BookRecommendation(id=9, title="Man's Search for Meaning"), ],
import random from concurrent import futures from signal import SIGTERM, signal import grpc from grpc_interceptor import ExceptionToStatusInterceptor from grpc_interceptor.exceptions import NotFound from recommendations_pb2 import BookCategory, BookRecommendation, RecommendationResponse from recommendations_pb2_grpc import ( RecommendationsServicer, add_RecommendationsServicer_to_server, ) all_books_by_category = { BookCategory.MYSTERY: [ BookRecommendation(id=1, title="The Maltese Falcon"), BookRecommendation(id=2, title="Murder on the Orient Express"), BookRecommendation(id=3, title="The Hound of the Baskervilles"), ], BookCategory.SCIENCE_FICTION: [ BookRecommendation(id=4, title="Away from the Galaxy"), BookRecommendation(id=5, title="Ender's Game"), BookRecommendation(id=6, title="The Dune Chronicles"), ], BookCategory.SELF_HELP: [ BookRecommendation(id=7, title="Habbits of Effective People"), BookRecommendation(id=8, title="How to Win"), BookRecommendation(id=9, title="Become a Good Chef"), ], }
import random import grpc from recommendations_pb2 import ( BookCategory, BookRecommendation, RecommendationResponse, ) import recommendations_pb2_grpc #In a real recommendation microservice , the books would be stored in a database books_by_category = { BookCategory.MYSTERY: [ BookRecommendation(id=1, title="the Maltese Falcon"), BookRecommendation(id=2, title="Muder on the orient express"), BookRecommendation(id=3, title="The Hound of the Baskervilles"), ], BookCategory.SCIENCE_FICTION: [ BookRecommendation(id=4, title="The Hitchhiker's Guide to the galaxy"), BookRecommendation(id=9, title="Man's search for meaning"), ], } class RecommendationService(recommendations_pb2_grpc.RecommendationsServicer): def Recommend(self, request, context): if request.category not in books_by_category: context.abort(grpc.StatusCode.NOT_FOUND, "Category not found")
from concurrent import futures import random import grpc from recommendations_pb2 import ( BookCategory, BookRecommendation, RecommendationResponse ) import recommendations_pb2_grpc books_by_category = { BookCategory.MYSTERY: [ BookRecommendation(id=1, title='The Maltese Falcon'), BookRecommendation(id=2, title='Murder on Orient Exp'), BookRecommendation(id=3, title='The Hound of Bask') ], BookCategory.SCIENCE_FICTION: [ BookRecommendation(id=5, title="Ender's Game"), BookRecommendation(id=6, title='The Dune Chronicles'), BookRecommendation(id=4, title='Hitchhiker Guide') ], BookCategory.SELF_HELP: [ BookRecommendation(id=7, title='The 7 Habits'), BookRecommendation(id=8, title='Win Friends'), BookRecommendation(id=9, title='Man search for meaning') ] }
from concurrent import futures import random import grpc from recommendations_pb2 import ( BookCategory, BookRecommendation, RecommendationResponse, ) import recommendations_pb2_grpc books_by_category = { BookCategory.MYSTERY: [ BookRecommendation(id=1, title="The Maltese Falcon"), BookRecommendation(id=2, title="Murder on the Orient Express"), BookRecommendation(id=3, title="The Hound of the Baskervilles"), ], } class RecommendationService(recommendations_pb2_grpc.RecommendationsServicer): def Recommend(self, request, context): if request.category not in books_by_category: context.abort(grpc.StatusCode.NOT_FOUND, "Category not found") books_for_category = books_by_category[request.category] num_results = min(request.max_results, len(books_for_category)) books_to_recommend = random.sample(books_for_category, num_results) return RecommendationResponse(recommendations=books_to_recommend)