#python #reactjs #flask #solr
#python #reactjs #flask #solr
Вопрос:
Я использую python flask
project в качестве серверной части API для своего веб-сайта электронной коммерции и Solr
это уровень поиска товаров и предложений на моем веб-сайте, когда клиент вводит что-либо в поле поиска моего интерфейса ( react Js
), он вызывает API для каждого параметра, и API получает запрос от http-вызова, затем он выполняет запрос и выполняет поиск в solr, затем он возвращает соответствующие ключевые слова в качестве http-ответа.
Моя проблема: одновременные http-вызовы, вызывающие задержку ответа на поисковое предложение.
Маршрут
@routes.route('/Search/suggest',methods=['POST'])
def Suggest():
search_response = ProductSearchController().SearchSuggest(request.get_json(force=True))
return search_response
Conroller
def SearchSuggest(self,request):
try:
keyword = str(request['keyword'])
final_suggesions = []
print("########################### START ##################################" str(request['keyword']) " start =====>")
print(datetime.now())
brandStatus, brandResponse = self.solrHelper.getBrandSuggestion(request)
catSubCatStatus, catSubCatResponse = self.solrHelper.getCategorySubCategorySuggestion(request)
productStatus, productResponse = self.solrHelper.getProductSuggestion(request)
modelStatus, modelResponse = self.solrHelper.getModelSuggestion(request)
print(" ########################## END ############################# " str(request['keyword']) " end <=====")
print(datetime.now())
####### some solr response validation goes here #########
response_data = SuccessResponse(final_suggesions)
except Exception as e:
track = traceback.format_exc()
app.logger.error('Server Error: %s', (e))
app.logger.critical(track)
return False, response_data
finally:
return True, response_data
Журнал вывода
########################### START ##################################cr start =====>
2020-09-05 05:32:56.706340
########################### START ##################################cri start =====>
2020-09-05 05:32:56.944722
########################### START ##################################cric start =====>
2020-09-05 05:32:57.157928
########################### START ##################################crick start =====>
2020-09-05 05:32:57.368213
########################### START ##################################cricke start =====>
2020-09-05 05:32:57.605466
########################### START ##################################cricket start =====>
2020-09-05 05:32:57.786270
########################## END ############################# cr end <=====
2020-09-05 05:32:58.056129
########################## END ############################# cri end <=====
2020-09-05 05:32:58.497315
########################## END ############################# cric end <=====
2020-09-05 05:32:58.717623
########################## END ############################# crick end <=====
2020-09-05 05:32:58.902956
########################## END ############################# cricke end <=====
2020-09-05 05:32:59.198349
########################## END ############################# cricket end <=====
2020-09-05 05:32:59.206024
Как вы можете видеть в журнале, пользователь вводит cricket
в поле поиска. Здесь происходят параллельные http-вызовы, поэтому, прежде чем получать результат первой буквы, следующие вызовы последовательности запускаются для той же функции, пожалуйста, предложите мне лучшее решение для этого процесса.