Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用django使芹菜节拍任务对所有对象而不是单个对象有效?_Django_Django Views_Celery_Django Celery_Django Celery Beat - Fatal编程技术网

如何使用django使芹菜节拍任务对所有对象而不是单个对象有效?

如何使用django使芹菜节拍任务对所有对象而不是单个对象有效?,django,django-views,celery,django-celery,django-celery-beat,Django,Django Views,Celery,Django Celery,Django Celery Beat,我试图通过调度程序任务删除过期的收据,但我面临一个问题,因为每次函数运行时,它只删除一个对象,尽管还有很多对象。当调度程序每60分钟运行一次时,如何更改代码以确保它删除所有已过过期日期的对象 @periodic_task(run_every=crontab(minute='*/60')) def delete_expired_receipts(): receipts = Receipt.objects.all() for receipt in receipts:

我试图通过调度程序任务删除过期的收据,但我面临一个问题,因为每次函数运行时,它只删除一个对象,尽管还有很多对象。当调度程序每60分钟运行一次时,如何更改代码以确保它删除所有已过过期日期的对象

@periodic_task(run_every=crontab(minute='*/60'))
def delete_expired_receipts():
    receipts = Receipt.objects.all()
    for receipt in receipts:
        if receipt.expiry_date <= timezone.now():
            receipt.delete()
            return "deleted the receipts at {}".format(timezone.now())
    return "No receipts"
@定期任务(每运行一次=crontab(分钟='*/60'))
def delete_expired_receipts():
receives=Receipt.objects.all()
收据中的收据:

如果receive.expiration\u date您需要删除循环中的return语句

@periodic_task(run_every=crontab(minute='*/60'))
def delete_expired_receipts():
    receipts = Receipt.objects.filter(expiry_date__lte=timezone.now())
    if receipts:
       receipts.delete()
       return "Reciepts have been deleted"
    return "No receipts"

您需要删除循环中的return语句

@periodic_task(run_every=crontab(minute='*/60'))
def delete_expired_receipts():
    receipts = Receipt.objects.filter(expiry_date__lte=timezone.now())
    if receipts:
       receipts.delete()
       return "Reciepts have been deleted"
    return "No receipts"