我已经通过使用django crontab设置了一个cron作业。根据文档中的定义,我在 cron.py 中定义了一个测试作业,并将其定义为在 settings.py 中以 1 分钟的间隔运行。
#cron.py
def test_cron_run():
print("nnHello 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')),
]
我通过运行 python3 manage.py crontab add
添加了 cron 作业。此外,还添加了作业,因为我可以看到我是否运行,python3 manage.py crontab show
但是,我看不到正在生成的任何日志文件。有没有办法调试这个,操作系统日志或其他东西?
为了结合这里给出的提示,这就是它对我的工作方式:
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
阅读。
也许只是尝试在 cron 作业结束时添加 2>&1
,它会将错误输出重定向到标准输出。
我遇到了同样的问题。我只能通过包含日志文件的直接路径并提前创建它来使其工作