django crontab

时间:2019-01-31 14:47:33

标签: python django cron django-cron

我已经使用django crontab设置了cron作业。按照文档中的定义,我在cron.py中定义了一个测试作业,并在settings.py中将其定义为每隔1分钟运行一次。

<script src="https://www.amcharts.com/lib/4/core.js"></script>
<script src="https://www.amcharts.com/lib/4/charts.js"></script>
<div id="chart"></div>

我通过运行#cron.py def test_cron_run(): print("\n\nHello World....!! ",timezone.now()) #settings.py INSTALLED_APPS = [ 'material.theme.cyan', 'material', 'material.admin', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp', 'django_crontab', ] CRONJOBS = [ ('*/1 * * * *', 'myapp.cron.test_cron_run','>>'+os.path.join(BASE_DIR,'log/debug7.log')), ] 添加了cron作业。 另外,作业也已添加,因为我可以运行python3 manage.py crontab add 但是,我看不到任何日志文件正在生成。 有什么方法可以调试它,操作系统日志或其他内容?

3 个答案:

答案 0 :(得分:0)

也许只是在cron作业结束时尝试添加2>&1,它将错误输出重定向到标准输出。

答案 1 :(得分:0)

我有同样的问题。我只能通过包括日志文件的直接路径并提前创建它来使它工作

答案 2 :(得分:0)

结合此处给出的提示,这对我有用:

import os

CRONJOBS = [
    ('* * * * *', 'myapp.cron.test_cron_run', '>> ' + os.path.join(BASE_DIR,'log/debug7.log' + ' 2>&1 '))
]

附加说明

  • 目录需要存在并且您需要写权限
  • 每次更改 CRONJOBS 后,运行 python3 manage.py crontab add 两次
  • 如果没有 2>&1,python 的错误消息在写入 STDERR 时不会被记录
  • 使用 crontab -l
  • 检查实际写入您的 crontab 的内容
  • 如果它不起作用,您可能会收到来自 cron 的邮件。根据您的系统,使用 mail 阅读。