如何debud django crontab?

Par*_*ras 5 python django cron django-cron

我使用 django crontab 设置了一个 cron 作业。根据文档中的定义,我在 cron.py 中定义了一个测试作业,并在 settings.py 中将其定义为以 1 分钟间隔运行。

#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')),
]
Run Code Online (Sandbox Code Playgroud)

我通过运行添加了 cron 作业python3 manage.py crontab add。此外,该作业也被添加,因为我可以看到我是否运行,python3 manage.py crontab show 但是我看不到正在生成的任何日志文件。有什么办法可以调试这个,操作系统日志之类的吗?

Den*_*Den 5

结合这里给出的提示,这对我来说是这样的:

import os

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

补充笔记

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


Tae*_*aek 1

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