django-celery-beat 和 DatabaseScheduler 设置了第一个 运行 时间

django-celery-beat and DatabaseScheduler with a set first run time

我想使用 django-celery-beat 和 DatabaseScheduler 为用户创建一个 "email alert" 函数。他们应该能够说出他们希望何时收到这些提醒(例如每天早上 7 点或每周一下午 1 点)。

我几乎想出了如何创建周期性任务,即

>>> PeriodicTask.objects.create(
...     interval=schedule,                  # we created this above.
...     name='Importing contacts',          # simply describes this periodic task.
...     task='proj.tasks.import_contacts',  # name of task.
...     expires=datetime.utcnow() + timedelta(seconds=30)
... )

来自 https://github.com/celery/django-celery-beat,但我如何告诉它第一次发送的时间?

PeriodicTask 模型中有一个字段 start_time。您可以为其设置日期时间值。任务会在那个时间之后先发送。

>>> PeriodicTask.objects.create(
        # skipped
        start_time=datetime.utcnow() + timedelta(seconds=300)
        # task will be first sent after 5 minutes
)