47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
from celery import Celery
|
|
from ..core.config import settings
|
|
from ..models.file import File, FileStatus
|
|
from sqlalchemy.orm import Session
|
|
from ..core.database import SessionLocal
|
|
import sys
|
|
import os
|
|
|
|
# Add the parent directory to Python path to import the masking system
|
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))))
|
|
from src.main import process_document # Import your existing masking function
|
|
|
|
celery = Celery(
|
|
'file_service',
|
|
broker=settings.CELERY_BROKER_URL,
|
|
backend=settings.CELERY_RESULT_BACKEND
|
|
)
|
|
|
|
@celery.task
|
|
def process_file(file_id: str):
|
|
db = SessionLocal()
|
|
try:
|
|
file = db.query(File).filter(File.id == file_id).first()
|
|
if not file:
|
|
return
|
|
|
|
# Update status to processing
|
|
file.status = FileStatus.PROCESSING
|
|
db.commit()
|
|
|
|
try:
|
|
# Process the file using your existing masking system
|
|
output_path = process_document(file.original_path)
|
|
|
|
# Update file record with processed path
|
|
file.processed_path = output_path
|
|
file.status = FileStatus.SUCCESS
|
|
db.commit()
|
|
|
|
except Exception as e:
|
|
file.status = FileStatus.FAILED
|
|
file.error_message = str(e)
|
|
db.commit()
|
|
raise
|
|
|
|
finally:
|
|
db.close() |