我正在尝试设置一个应在一段时间后过期的定期任务。我正在使用 Django 1.5.1、celery 3.0.19 和 django-celery 3.0.17(一切都来自 pip)。这是创建任务的摘录代码:
from django.utils import timezone
from datetime import timedelta, datetime
from djcelery.models import PeriodicTask, IntervalSchedule
interval = IntervalSchedule.objects.get(pk=1) # Added through fixture - 3sec interval
expiration = timezone.now() + timedelta(seconds=10)
task = PeriodicTask(name='fill_%d' % profile.id,
task='fill_album',
args=[instance.id],
interval=interval,
expires=expiration) task.save()
我正在用芹菜./manage.py celeryd -B
任务创建得很好,beat 每 3 秒运行一次,但 10 秒后它不会过期。起初我认为这是 django 和 celery 之间的一些时区问题,所以我让它运行了 3 个小时(我与 UTC 的差异)但它仍然不会过期。
在我的测试中,我实际上已经设法让它过期一次(并且记录器不断重复它已经过期,每 3 秒一次),但从那以后我就无法重现它。
谁能阐明我做错了什么?谢谢!