最终,管理命令将用于每周一次抓取数据并填充一个数据库,但现在我只是尝试按计划打印。下面是管理命令(位于player/management/commands/update_data.py
):
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def handle(self, *args, **options):
print('This is working')
字符串
现在到日程安排部分……我跑了
python3 -m pip install django-crontab
型
将以下内容添加到settings.py
:
INSTALLED_APPS = [
'django_crontab',
'player',
]
CRONJOBS = [
('*/1 * * * * ', 'django.core.management.update_data'),# I believe what I am saying here is run update_data every minute?
]
型
最后
python manage.py crontab add
型
返回
adding cronjob: (1be0bb6367b686fd03a204d920284ed3) -> ('*/1 * * * * ',
'django.core.management.update_data')
型
然后我等了一分钟,“这是工作”从来没有打印到控制台。如果有人熟悉这个django-crontab
(https://pypi.org/project/django-crontab/)包,或者知道调度管理命令的其他方法,请提供帮助。先谢了。
2条答案
按热度按时间wlzqhblo1#
我知道这个问题很久以前就发布了,但我也遇到过类似的情况,在StackOverflow上找不到解决方案,所以我决定在这里发布我的解决方案。
在macOS Ventura 13.4上为我解决这个问题的方法是,在完成前面提到的所有步骤后,授予cron完整磁盘访问权限。要这样做,请进入系统首选项->安全和隐私->隐私->完整磁盘访问,并将cron添加到列表中。Cron应该位于/usr/sbin/cron中。
另外,我的cronjob有一点不同,因为我使用了django-crontab文档中也提到的不同类型的语法。(https://pypi.org/project/django-crontab/)我的cronjob看起来像这样:
字符串
在这里,app_name/management/commands/update_data.py是管理命令,就像在您的项目中一样。
希望这能帮助下一个遇到问题的可怜人。
pbossiut2#
我自己的cron作业也有类似的问题,它通过shell脚本定期记录我的IP地址。使用Apple的迁移工具,该任务在3代Mac上传播并保持功能。只有在Ventura下它才不再工作,尽管它仍然在Ventura下列出。
crontab -l
的。除此之外,我还想提一下,不仅cron服务本身必须具有Full Disk Access,而且很有可能应该调用的作业也必须具有。这有点奇怪,因为手动调用shell作业可以工作,但从cron调用时却不行。
由于cron在2016年的某个时候被Apple弃用(https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/ScheduledJobs.html),我将常规任务改为launchd。这几乎更容易,而且运行得更好,因为当任务更改时会显示一条消息,因此您可以更好地了解后台发生的情况。仍然需要向定期运行的作业授予全磁盘访问权限。
我发现奥雷雷斯的答案刚才当我想把这个作为一个问题自己。(这两个答案都没有特别提到django,所以可能是一些额外的标签可能有助于找到这个答案。