도커라이징

This commit is contained in:
2025-02-13 16:37:45 +09:00
parent ad26488b1b
commit 0d34c20882
8 changed files with 267 additions and 95 deletions

View File

@@ -1,56 +1,38 @@
import json
import time
import logging
import convert_obj_to_md
import redis
from redis_client import redis_client
from rq import Worker
UPLOAD_DIR = "data"
OUTPUT_DIR = "converted"
redis_client = redis.StrictRedis(host="localhost", port=6379, decode_responses=True)
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def process_task(task):
"""
태스크 정보를 기반으로 파일 확장자에 맞는 변환 함수를 호출.
태스크 정보를 기반으로 파일 확장자에 맞는 변환 함수를 호출합니다.
"""
file_ext = task.get("extension")
input_path = task.get("input_path")
output_path = task.get("output_path")
converters = {
"txt": convert_obj_to_md.convert_txt_to_md,
"hwp": convert_obj_to_md.convert_hwp_to_md,
"docx": convert_obj_to_md.convert_docx_to_md,
"pdf": convert_obj_to_md.convert_pdf_to_md,
"ppt": convert_obj_to_md.convert_ppt_to_md,
"excel": convert_obj_to_md.convert_excel_to_md,
}
converter = converters.get(file_ext)
if converter:
converter(input_path, output_path)
else:
print(f"지원하지 않는 파일 형식: {file_ext}")
logger.info(f"작업 처리 중: {task}")
def worker():
"""Redis 큐에서 태스크를 가져와 파일 변환 작업을 수행"""
while True:
# rpop: 큐의 오른쪽에서 태스크를 꺼냄
task_json = redis_client.rpop("task_queue")
if task_json:
try:
task = json.loads(task_json)
print(f"작업 처리 중: {task}")
process_task(task)
except Exception as e:
print(f"작업 처리 중 에러: {e}")
try:
if file_ext == "hwp":
convert_obj_to_md.convert_hwp_to_md(input_path, output_path)
else:
print("큐에 작업이 없습니다. 5초 후 재시도...")
time.sleep(5)
convert_obj_to_md.convert_to_md(input_path, output_path)
logger.info(f"변환 완료: {task}")
return {"status": "success", "output_path": output_path}
except Exception as e:
logger.error(f"작업 처리 중 에러: {e}", exc_info=True)
return {"status": "error", "message": str(e)}
if __name__ == "__main__":
print("Redis 워커 시작!")
worker()
listen = ["task_queue1"]
worker = Worker(listen, connection=redis_client) # 최신 방식
worker.work()