57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
import json
|
|
import time
|
|
|
|
import convert_obj_to_md
|
|
import redis
|
|
|
|
UPLOAD_DIR = "data"
|
|
OUTPUT_DIR = "converted"
|
|
|
|
|
|
redis_client = redis.StrictRedis(host="localhost", port=6379, decode_responses=True)
|
|
|
|
|
|
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}")
|
|
|
|
|
|
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}")
|
|
else:
|
|
print("큐에 작업이 없습니다. 5초 후 재시도...")
|
|
time.sleep(5)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print("Redis 워커 시작!")
|
|
worker()
|