scipious commited on
Commit
5eaa26e
·
verified ·
1 Parent(s): 4dfd818

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -9
app.py CHANGED
@@ -15,6 +15,10 @@ import leximind_prompts
15
  # --- Together AI SDK ---
16
  from together import Together
17
 
 
 
 
 
18
  # --- Flask & SocketIO 설정 ---
19
  app = Flask(__name__)
20
  socketio = SocketIO(app, cors_allowed_origins="*", async_mode='eventlet')
@@ -42,11 +46,10 @@ lexi_prompts = leximind_prompts.PromptLibrary()
42
  # --- RAG 객체 ---
43
  region_rag_objects = {}
44
 
45
- # --- Together AI 클라이언트 (Hugging Face Secrets에서 API 키 가져오기) ---
46
  TOGETHER_API_KEY = os.getenv("TOGETHER_API_KEY")
47
  if not TOGETHER_API_KEY:
48
  raise EnvironmentError("TOGETHER_API_KEY가 설정되지 않았습니다. Hugging Face Secrets에 추가하세요.")
49
-
50
  client = Together(api_key=TOGETHER_API_KEY)
51
 
52
  # --- RAG 로딩 ---
@@ -118,7 +121,8 @@ def get_reg_list():
118
  all_reg_list_part = []
119
  for region in selected_regions:
120
  rag = region_rag_objects.get(region)
121
- if not rag: continue
 
122
  try:
123
  conn = rag["sqlite_conn"]
124
  parts = reg_embedding_system.get_unique_metadata_values(conn, "regulation_part")
@@ -190,7 +194,8 @@ def search_DB_from_multiple_regions(query, selected_regions, region_rag_objects)
190
  combined_results = []
191
  for region in selected_regions:
192
  rag = region_rag_objects.get(region)
193
- if not rag: continue
 
194
 
195
  retriever = rag["ensemble_retriever"]
196
  vectorstore = rag["vectorstore"]
@@ -235,17 +240,14 @@ def RegAI(query, Rag_Results, ResultFile_FolderAddress):
235
 
236
  # --- 실행 ---
237
  if __name__ == '__main__':
238
- # 로컬 개발용 (flask run 또는 python app.py)
239
  threading.Thread(target=load_rag_objects, daemon=True).start()
240
  time.sleep(2)
241
  socketio.emit('message', {'message': '데이터 로딩 시작...'})
242
  socketio.run(app, host='0.0.0.0', port=7860, debug=False)
243
  else:
244
- # Gunicorn으로 실행될 때는 백그라운드 로딩만 시작
245
- # (Gunicorn 워커가 시작된 후 로딩 시작되도록)
246
  import atexit
247
  loading_thread = threading.Thread(target=load_rag_objects, daemon=True)
248
  loading_thread.start()
249
-
250
- # 서버 종료 시 정리
251
  atexit.register(cleanup_connections)
 
15
  # --- Together AI SDK ---
16
  from together import Together
17
 
18
+ # --- eventlet monkey patch (Gunicorn + SocketIO 필수!) ---
19
+ import eventlet
20
+ eventlet.monkey_patch()
21
+
22
  # --- Flask & SocketIO 설정 ---
23
  app = Flask(__name__)
24
  socketio = SocketIO(app, cors_allowed_origins="*", async_mode='eventlet')
 
46
  # --- RAG 객체 ---
47
  region_rag_objects = {}
48
 
49
+ # --- Together AI 클라이언트 ---
50
  TOGETHER_API_KEY = os.getenv("TOGETHER_API_KEY")
51
  if not TOGETHER_API_KEY:
52
  raise EnvironmentError("TOGETHER_API_KEY가 설정되지 않았습니다. Hugging Face Secrets에 추가하세요.")
 
53
  client = Together(api_key=TOGETHER_API_KEY)
54
 
55
  # --- RAG 로딩 ---
 
121
  all_reg_list_part = []
122
  for region in selected_regions:
123
  rag = region_rag_objects.get(region)
124
+ if not rag:
125
+ continue
126
  try:
127
  conn = rag["sqlite_conn"]
128
  parts = reg_embedding_system.get_unique_metadata_values(conn, "regulation_part")
 
194
  combined_results = []
195
  for region in selected_regions:
196
  rag = region_rag_objects.get(region)
197
+ if not rag:
198
+ continue
199
 
200
  retriever = rag["ensemble_retriever"]
201
  vectorstore = rag["vectorstore"]
 
240
 
241
  # --- 실행 ---
242
  if __name__ == '__main__':
243
+ # 로컬 개발용
244
  threading.Thread(target=load_rag_objects, daemon=True).start()
245
  time.sleep(2)
246
  socketio.emit('message', {'message': '데이터 로딩 시작...'})
247
  socketio.run(app, host='0.0.0.0', port=7860, debug=False)
248
  else:
249
+ # Gunicorn용: 워커 시작 로딩
 
250
  import atexit
251
  loading_thread = threading.Thread(target=load_rag_objects, daemon=True)
252
  loading_thread.start()
 
 
253
  atexit.register(cleanup_connections)