【问题标题】:How do I pass argument to a scheduled cron task, in Django?如何在 Django 中将参数传递给计划的 cron 任务?
【发布时间】:2020-12-08 16:40:50
【问题描述】:

我设置了一个 cron 作业,每分钟递减所有对象的 IntegerField。

但它会抛出错误:

TypeError: decrement_days_till_study() missing 1 required positional argument: 'Card'

但我不知道如何通过这个。

cron.py

from . models import Card
    
def decrement_days_till_study(Card):
    for card in Card.objects.all():
        if card > 1:
            card.days_till_study -= 10
            card.save()

我的模型与 cron.py 位于同一文件夹中。

我的设置

  INSTALLED_APPS = [
        'django_crontab'
]

    CRONJOBS = [
    ('*/1 * * * *', 'spaced_repitition.cron.decrement_days_till_study')]

我通过打印一个运行良好的字符串来测试 cron。

你知道如何解决这个问题吗?

感谢阅读。

【问题讨论】:

    标签: django django-models cron cron-task


    【解决方案1】:

    这里不是 django 专家,但似乎您正在通过定义函数变量来覆盖您的导入。

    尝试从函数参数列表中删除Card

    from . models import Card
    
    def decrement_days_till_study():
        for card in Card.objects.all():
            if card > 1:
                card.days_till_study -= 10
                card.save()
    

    【讨论】:

    • 就是这样。谢谢!
    猜你喜欢
    • 2020-10-30
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2011-12-22
    • 2019-11-13
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多