search-thread
This commit is contained in:
parent
24cbba0746
commit
b4f86526a2
|
@ -1,6 +1,5 @@
|
|||
import json
|
||||
import os
|
||||
from multiprocessing import Manager
|
||||
import threading
|
||||
|
||||
from opensearchpy import OpenSearch
|
||||
|
@ -39,7 +38,8 @@ index_settings = {
|
|||
'properties': {
|
||||
'body': {'type': 'text', 'analyzer': 'ru'},
|
||||
'title': {'type': 'text', 'analyzer': 'ru'},
|
||||
# 'author': {'type': 'text'},
|
||||
'lead': {'type': 'text', 'analyzer': 'ru'},
|
||||
'subtitle': {'type': 'text', 'analyzer': 'ru'},
|
||||
}
|
||||
},
|
||||
}
|
||||
|
@ -50,12 +50,10 @@ expected_mapping = index_settings['mappings']
|
|||
class SearchService:
|
||||
def __init__(self, index_name='search_index'):
|
||||
self.index_name = index_name
|
||||
self.manager = Manager()
|
||||
self.client = None
|
||||
|
||||
# Используем менеджер для создания Lock и Value
|
||||
self.lock = threading.Lock()
|
||||
self.initialized_flag = self.manager.Value('i', 0)
|
||||
|
||||
# Only initialize the instance if it's not already initialized
|
||||
if not self.initialized_flag.value and ELASTIC_HOST:
|
||||
|
@ -129,13 +127,18 @@ class SearchService:
|
|||
def recreate_index(self):
|
||||
if self.lock.acquire(blocking=False):
|
||||
try:
|
||||
self.delete_index()
|
||||
self.check_index()
|
||||
thread = threading.Thread(target=self._recreate_index)
|
||||
thread.start()
|
||||
thread.join()
|
||||
finally:
|
||||
self.lock.release()
|
||||
else:
|
||||
logger.debug(' cant reindex at the moment')
|
||||
|
||||
def _recreate_index(self):
|
||||
self.delete_index()
|
||||
self.check_index()
|
||||
|
||||
def index(self, shout):
|
||||
if self.client:
|
||||
id_ = str(shout.id)
|
||||
|
|
Loading…
Reference in New Issue
Block a user