我想安排一个删除方法,这样的cron可以执行它,但我想出CommandError: error job not completed
我塞进了一些地方只是不知道在哪里:(Django的管理命令来删除旧的对象
from datetime import datetime
from django.core.management.base import BaseCommand, CommandError
from jobs.models import Job
class Command(BaseCommand):
help = 'Deletes the old jobs past 30days'
def handle(self, *args, **options):
try:
jobs = Job.objects.filter(has_paid=True)
for job in jobs:
today = datetime.today()
pub_date = job.date_published.date()
diff = today - pub_date
if diff.days >= 30:
job.delete()
except:
# error message
raise CommandError('error job not completed')
# success message
self.stdout.write('Successfully removed all old jobs')
好吧,如果你没有故意隐藏Django抛出的错误,也许你可以告诉。 –
我认为它可以从django的日期时间和时区感知日期减去正常日期。或pub_date为空。但正如丹尼尔所说,让异常抛出,让我们看到发生了什么。 (除了后面写“raise”)。 –
@DanielRoseman的意思是,你的bare'except'会捕获所有异常/错误,因此隐藏真正发生的事情。查看你的代码的一种可能性是'date_published'可以为空或者'DateTimeField',这可能导致'AttributeError'或'TypeError'。 – schwobaseggl