我想每周调用一次方法,为此我实现了这里提到的
https://gutsytechster.wordpress.com/2019/06/24/how-to-setup-a-cron-job-in-django/
我不确定它是如何工作的,但让我解释一下我做了什么。我需要调用下面文件夹结构中提到的方法。
proj_application
|
|- myapp
|
|-views.py (Method call Inside)
|- poll_tracked()
在views.py中,
def poll_tracked():
print('called')
在settings.py中,我提到了
INSTALLED_APPS = [
'django_crontab',
]
CRONJOBS = [
('* * * * *', 'myapp.views.poll_tracked', '>>' + os.path.join(BASE_DIR, 'data.log'))
]
然后我运行
python3.7 manage.py crontab add
python3.7 manage.py runserver
当我运行crontab-l时,我可以看到,
* * * * * /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 /Users/domain/dashboard/proj_application/manage.py crontab run dceca84af9ceab8a4d39d08fa148969f >>/Users/domain/dashboard/proj_application/data.log # django-cronjobs for proj_application
生成了一个名为data.log的新日志文件,但所提到的方法poll_tracked((未被调用,日志为空。
以前有人遇到过这个问题吗?如果是,请提供任何帮助。谢谢
也许只需尝试在最后添加2>&1
,它会将错误输出重定向到标准输出,并可能解释日志文件为空的原因。此外,您在>>
后面缺少一个空格
CRONJOBS = [
('* * * * *', 'myapp.views.poll_tracked', '>> ' + os.path.join(BASE_DIR, 'data.log') + ' 2>&1')
]