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

Django中配置Django-Crontabs每日6点定时任务失败,求解决方案

解决Django-Crontabs每日6点定时任务不生效的问题

1. 修正Cron表达式

你现在用的* 6 * * *其实是每天6点的每分钟都执行一次,但如果没触发,核心问题是表达式不符合“每日6点整执行一次”的需求。正确的表达式应该把分钟位设为0:

CRONJOBS = [
    ('0 6 * * *', 'myapp.cron.cronfunction')
]

Cron表达式的格式是分 时 日 月 周,这里:

  • 0:指定整点执行,不会每分钟重复运行
  • 6:锁定早上6点
  • 后面三个*表示匹配任意日期、月份、星期,也就是每天都执行

2. 核对时区是否一致

Django的时区和系统crontab的时区如果不匹配,会导致任务执行时间和预期偏差:

  • 打开settings.py查看TIME_ZONE配置,比如TIME_ZONE = 'Asia/Shanghai'
  • 执行命令cat /etc/timezone查看系统crontab的时区
    必须保证两者一致,不然任务会按系统时区运行,可能根本不是你预期的6点。

3. 重新加载Crontab任务

修改配置后,一定要重新生成并加载任务:

  • 先清除旧任务:python manage.py crontab remove
  • 再添加新任务:python manage.py crontab add
  • 最后用python manage.py crontab show确认任务已正确添加

4. 排查日志与权限

  • 查看系统crontab的日志,一般在/var/log/cron或/var/log/syslog中,查找任务执行记录或报错信息
  • 确保运行Django的用户有执行该任务的权限,同时检查cron.py中的logger是否配置正确,能将日志输出到可查看的位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:52:31