记: django-crontab 启动成功,但指定log文件无输出

3 篇文章 0 订阅
2 篇文章 0 订阅

问题记录

最近项目中有一个需求—>定时修改状态,在django中执行定时任务,有两种方法
  • django-celery
  • django-crontab

最后使用django-crontab(windows无法使用),使用过程:

  • 首先在环境中安装django-crontab

pip install django-crontab

  • setttings.py中配置
INSTALLED_APPS = (
	'django.contrib.admin',
	'django.contrib.auth',
	'django.contrib.contenttypes',
	'django.contrib.sessions',
	'django.contrib.messages',
	'django.contrib.staticfiles',
	'django_crontab'
)

# 在settings.py中可以这么使用:
CRONJOBS=(
	# 每一分钟执行一次你的定时函数
	('*/1 * * * *', 'django.core.management.call_command', ['runtimed'], {}, f'>>{CRON_PATH}/cron_user.log'),
)
  • 管理crontab
python manage.py crontab add  # 添加
python manage.py crontab show  # 查看
python manage.py crontab remove # 删除
以上是简单的使用以及配置。我原本以为的也是这么简单,但问题终究是发生了。添加crontab定时任务以后,指定日志文件中并没有得到相应的日志记录 那么这个定时任务是运行成功了呢? 还是运行不成功呢?指定是没有运行成功的

反复检查,焦头烂耳也没有找到问题所在之处。各种资料查找。终于找到了解决方案得以解脱,发现问题所在就好办了, 接下来就消灭它。以下是重点,总结了我查找的资料及解决方案

  • 首先查看cron系统日志。cron日志默认是没有开启的,所以需要我们开启以下
ubuntu 系统
sudo vim /etc/rsyslog.d/50-default.conf
cron.*              /var/log/cron.log   #找到这一句  将cron前面的注释符去掉
重启syslog
sudo  service rsyslog  restart
  • 然后查看cron.log 是否正常执行
sudo vi /var/log/cron.log

然后我找到了我的问题所在之处
在这里插入图片描述
(CRON) info (No MTA installed, discarding output) 这个报错的主要原因是没有配置邮件服务器

  • 接下来我们要安装一下邮件服务器
sudo apt-get install postfix

安装完毕后,再次看一下cron.log,发现没有错误信息了,但是指定的日志记录还是没有。这是会发现终端会提示 You have new mail.
查看提示邮箱信息

vi /var/mail/ubuntu 

在这里插入图片描述
原来提示我,日志路径没有权限。 重新赋予权限即可

大功告成 !!! 完美解决 !!!

在这里插入图片描述
备注: 我是用的cronjobs是 Command 命令 参考文章

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值