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
浙公网安备 33010602011771号