diff --git a/docker-compose.yml b/docker-compose.yml index 2da70f4..d055ecd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,45 +1,22 @@ services: - web: + flask_app: build: - context: . - dockerfile: Dockerfile - command: python flask_app/start_up.py + context: . # 构建上下文为当前目录 + dockerfile: Dockerfile # 指定 Dockerfile ports: - - "5001:5001" - volumes: - - .:/flask_project - - /home/Z/zbparse_output_dev:/flask_project/flask_app/static/output + - "5001:5001" # 将容器的5001端口映射到主机的5001端口 env_file: - - .env - depends_on: - - redis - networks: - - flask_network - privileged: true - - - worker: - privileged: true - build: - context: . - dockerfile: Dockerfile - command: celery -A flask_app.celery_app.celery_app worker --loglevel=info + - .env # 使用 .env 文件中的环境变量 + environment: + # 如果需要覆盖或添加额外的环境变量,可以在这里定义 + # 例如: + # DEBUG: 'false' volumes: - - .:/flask_project - env_file: - - .env - depends_on: - - redis - networks: - - flask_network +# - .:/flask_project # 将当前目录挂载到容器的 /flask_project 目录(可选,便于开发时实时更新代码) + - /home/Z/zbparse_output:/flask_project/flask_app/static/output # 额外的数据卷挂载 + restart: unless-stopped # 容器退出时自动重启,除非明确停止 - redis: - image: redis:bullseye - ports: - - "6379:6379" - networks: - - flask_network - -networks: - flask_network: - driver: bridge +# 可选:定义网络或其他全局配置 +# networks: +# default: +# driver: bridge diff --git a/flask_app/celery_app.py b/flask_app/celery_app.py deleted file mode 100644 index cf6dab8..0000000 --- a/flask_app/celery_app.py +++ /dev/null @@ -1,22 +0,0 @@ -# flask_app/celery_app -import os -from celery import Celery - -# 创建 Celery 实例 -celery_app = Celery( - 'tasks', - broker=os.getenv('CELERY_BROKER_URL', 'redis://redis:6379/0'), # 从环境变量加载 Broker 地址 - backend=os.getenv('CELERY_RESULT_BACKEND', 'redis://redis:6379/0') # 从环境变量加载 Backend 地址 -) - -# 设置任务队列的速率限制(全局每分钟 250 次) -celery_app.conf.task_annotations = { - 'flask_app.task.process_qianwen_long': {'rate_limit': '250/m'} -} - -# 可选:加载更多配置项(从环境变量或直接配置) -celery_app.conf.update( - timezone='UTC', # 设置时区(可根据需要修改) - enable_utc=True # 确保 UTC 时间生效 -) -celery_app.autodiscover_tasks(['flask_app.task']) \ No newline at end of file diff --git a/flask_app/routes/routes.py b/flask_app/routes/routes.py deleted file mode 100644 index 1046fd1..0000000 --- a/flask_app/routes/routes.py +++ /dev/null @@ -1,45 +0,0 @@ -# flask_project/flask_app/routes.py -from flask import request, jsonify -from flask_app.task import process_qianwen_long - -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/', 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) diff --git a/flask_app/task.py b/flask_app/task.py deleted file mode 100644 index 9e7ccbc..0000000 --- a/flask_app/task.py +++ /dev/null @@ -1,19 +0,0 @@ -# flask_app/task -from flask_app.celery_app import celery_app -from flask_app.general.通义千问long import qianwen_long - - -@celery_app.task( - name='flask_app.task.process_qianwen_long', - bind=True, - soft_time_limit=600, # 10分钟后发出超时信号 - time_limit=660, - max_retries=3, # 最大重试次数 - default_retry_delay=60 # 重试延迟时间(秒) -) -def process_qianwen_long(self, file_id, user_query): - try: - return qianwen_long(file_id, user_query) - except Exception as exc: - print("任务发生异常,准备重试") - raise self.retry(exc=exc) \ No newline at end of file