2024-11-24 11:11:20 +08:00
|
|
|
# flask_project/flask_app/routes.py
|
|
|
|
from flask import request, jsonify
|
2024-11-25 17:18:30 +08:00
|
|
|
from flask_app.task import process_qianwen_long
|
2024-11-24 11:11:20 +08:00
|
|
|
|
|
|
|
def register_routes(app):
|
|
|
|
@app.route('/api/qianwen_long', methods=['POST'])
|
|
|
|
def qianwen_long_endpoint():
|
|
|
|
data = request.json
|
|
|
|
file_id = data.get('file_id')
|
|
|
|
user_query = data.get('user_query')
|
|
|
|
|
|
|
|
if not file_id or not user_query:
|
|
|
|
return jsonify({'error': 'file_id 和 user_query 是必需的'}), 400
|
|
|
|
|
|
|
|
try:
|
|
|
|
# 发送任务到 Celery 队列
|
|
|
|
task = process_qianwen_long.delay(file_id, user_query)
|
|
|
|
return jsonify({'task_id': task.id}), 202
|
|
|
|
except Exception as e:
|
|
|
|
return jsonify({'error': str(e)}), 500
|
|
|
|
|
|
|
|
@app.route('/api/task_status/<task_id>', methods=['GET'])
|
|
|
|
def get_task_status(task_id):
|
|
|
|
task = process_qianwen_long.AsyncResult(task_id)
|
|
|
|
if task.state == 'PENDING':
|
|
|
|
response = {
|
|
|
|
'state': task.state,
|
|
|
|
'status': '等待中...'
|
|
|
|
}
|
|
|
|
elif task.state == 'SUCCESS':
|
|
|
|
response = {
|
|
|
|
'state': task.state,
|
|
|
|
'result': task.result
|
|
|
|
}
|
|
|
|
elif task.state == 'FAILURE':
|
|
|
|
response = {
|
|
|
|
'state': task.state,
|
|
|
|
'status': str(task.info), # 错误信息
|
|
|
|
}
|
|
|
|
else:
|
|
|
|
response = {
|
|
|
|
'state': task.state,
|
|
|
|
'status': task.info,
|
|
|
|
}
|
|
|
|
return jsonify(response)
|