You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Celery调度天气缓存任务无响应及FileNotFoundError问题求助

Celery任务无响应+FileNotFoundError问题排查与解决

1. 锁定工作目录问题

单独跑脚本时你是在项目目录下操作,但启动Celery worker/beat时,可能是在其他路径执行的,导致代码里的相对路径文件找不到。

  • 启动Celery时直接指定工作目录:
    celery -A 你的应用名 worker --loglevel=info --workdir=/你的项目绝对路径
    celery -A 你的应用名 beat --loglevel=info --workdir=/你的项目绝对路径
    
  • 或者先cd到项目根目录,再执行Celery启动命令。

2. 把所有文件路径改成绝对路径

代码里如果有用相对路径加载本地文件(比如城市列表、配置文件),全部换成绝对路径,避免路径依赖:

import os
# 获取当前脚本所在目录的绝对路径
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# 拼接目标文件路径
target_file = os.path.join(BASE_DIR, "需要加载的文件名")

3. 校验环境变量与配置加载

  • 确认Celery启动时能读到RabbitMQ和Redis的连接配置,检查CELERY_BROKER_URL、CELERY_RESULT_BACKEND是否正确赋值。
  • 如果用了.env文件存配置,在Celery应用初始化的地方手动加载环境变量:
    from dotenv import load_dotenv
    load_dotenv()  # 加载项目根目录的.env文件
    

4. 排查日志与权限

  • 要是配置了Celery日志文件,先确认日志目录存在且进程有写入权限,比如提前创建logs目录:
    log_dir = os.path.join(BASE_DIR, "logs")
    os.makedirs(log_dir, exist_ok=True)
    
  • 用debug级别启动Celery,看具体是哪个文件找不到:
    celery -A 你的应用名 worker --loglevel=debug
    

5. 确认任务已被注册

  • 检查天气缓存函数是否用@app.task装饰,且Celery应用能导入到这个函数。
  • 用命令查看已注册的任务,确认你的任务在列表里:
    celery -A 你的应用名 inspect tasks
    

内容的提问来源于stack exchange,提问作者ittec

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:47:01