celery: 定时任务运行时报错:KeyError: 'app.tasks.my_cron.clear_expired_sessions'

一,报错信息:

运行时报:KeyError: 'app.tasks.my_cron.clear_expired_sessions'

app.tasks.my_cron.clear_expired_sessions在这里是代码中指定的任务的名称,代码如下:

# 注册一个定时清理或检查的任务
@celery_app.task(name="app.tasks.my_cron.clear_expired_sessions")
def clear_expired_sessions():
    """
    模拟每天凌晨执行的清理过期 Session 的任务
    """
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    content = f"⏰ [定时任务触发] 当前时间: {now} | 开始清理过期数据库 Session..."
    print(content)

    logger.bind(log_type="alipay").info(content)

    # 你的数据库清理逻辑写在这里
    return "Cleanup completed"

二,原因

这是一个非常经典的“灯下黑”问题。
当你修改了任务文件的名字、移动了目录,或者修改了 @celery_app.task(name=...) 之后,你必须手动重启 Celery Worker 进程
  • FastAPI 的 --reload 只会自动重启 Web 服务,不会自动重启 Celery 进程
  • 必须在终端中按下 Ctrl + C 关闭 Worker 和 Beat,然后重新执行启动命令。

三,解决:

重启celery的worker进程:

$ celery -A celery_app.celery_app worker --loglevel=info --concurrency=4

 

posted @ 2026-06-21 13:08  刘宏缔的架构森林  阅读(4)  评论(0)    收藏  举报