3

我已经使用 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')),
]

我已经通过运行添加了 cron 作业python3 manage.py crontab add。还添加了作业,因为我可以看到我是否运行,python3 manage.py crontab show 但是我看不到正在生成任何日志文件。有没有办法调试这个,操作系统日志或什么?

4

3 回答 3

1

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

于 2019-01-31T15:19:00.430 回答
1

结合这里给出的提示,这就是它对我的工作方式:

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 的内容crontab -l
  • 如果它不起作用,您可能会收到来自 cron 的邮件。根据您的系统,使用mail.
于 2021-07-30T05:28:35.710 回答
0

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

于 2020-12-09T00:09:28.117 回答