from flask import Flask, request, jsonify import requests from pipeline import pdf2markdown_pipeline import concurrent.futures from loguru import logger app = Flask(__name__) executor = concurrent.futures.ThreadPoolExecutor(max_workers=1) def pdf2markdown_task(pdf_paths, callback_url): for pdf_path in pdf_paths: process_status, pdf_id = pdf2markdown_pipeline(pdf_path) requests.post(callback_url, json={'pdfId': pdf_id, 'processStatus': process_status}) @app.route('/pdf-qa-server/pdf-to-md', methods=['POST']) def pdf2markdown(): data = request.json logger.info(f'request params: {data}') pdf_paths = data['pathList'] callback_url = data['webhookUrl'] executor.submit(pdf2markdown_task, pdf_paths, callback_url) return jsonify({}) if __name__ == '__main__': app.run(host='0.0.0.0', port=8000)