Django项目使用Django-crontab出现的问题:在项目终端下可以执行成功,但自动执行出错(或者不执行)

在做一个项目时,需要定期生成静态页面,使用到了Django-crontab。过程中被在项目终端下可以执行成功,但自动执行出错(或者不执行)的现象折磨,这里记录一下,供大家和自己以后遇到了参考。

1、问题描述

安装 django-crontab 并注册,添加:

在这里插入图片描述


走到这步可以说明,我们的定时任务已经添加进定期任务表里了:
在这里插入图片描述

此时问题出现了

在项目终端下可以执行成功,但自动执行出错

自己执行时候报错:
在这里插入图片描述

找不到模板,但是我已经添加过了。
最后发现问题所在:

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

Django 项目的路径组织,执行的时候从当前路径下寻找,如果执行的目录和它不同,这里就会找不到BASE_DIR 相关的文件、目录。
所以,项目的运行要和工程下 由 manager.py的一致。
在这里插入图片描述

2、问题解决:

通过添加前缀,可以调整任务表里的任务执行的地址:
在这里插入图片描述
将之前的任务删除,再重新添加:

在这里插入图片描述

fan@ubuntu:Dmall$ crontab -l
*/1 * * * * cd /home/fan/PycharmProjects/Dmall/Dmall && /home/fan/PycharmProjects/Dmall/venv/bin/python /home/fan/PycharmProjects/Dmall/Dmall/manage.py crontab run e2cb7a9f4fe20cf557d549718eec32e9 >> /home/fan/PycharmProjects/Dmall/Dmall/logs/crontab.log # django-cronjobs for Dmall

补充

后面发现是这里路径之前加的有问题
在这里插入图片描述
修改后
在这里插入图片描述
同时,这里的前缀也可以去掉。
在这里插入图片描述

总结

项目的路径和依赖一定要仔细检查,解决问题的分析过程还是有瑕疵,路径虽然可以用加前缀的方式解决,但是引入了不必要的东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值