You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用django_celery_beat创建定时任务时遇Validation error问题求助

解决django_celery_beat创建Clocked任务的验证错误

错误['clocked must be one off, one_off must set True']的原因很明确:当你为PeriodicTask关联ClockedSchedule时,该任务必须被标记为一次性任务,也就是必须设置one_off=True参数。

修改你的schedule_mail_task函数,在创建PeriodicTask时添加one_off=True:

def schedule_mail_task(sender, instance, created, **kwargs):
    if created:
        clocked_schedule, created = ClockedSchedule.objects.get_or_create(
            clocked_time=instance.time_to_send,
        )
        periodic_task = PeriodicTask.objects.create(
            clocked=clocked_schedule,
            name=f"{instance.name}_{instance.id}",  # 注意:你的MailTask模型没有timestamp字段,建议用id或其他唯一标识保证任务名称唯一
            task='core.tasks.send_mail_func',
            enabled=True,
            one_off=True,  # 必须添加这个参数
        )

另外注意你原代码中的name=f'instance.name+{instance.timestamp}',你的MailTask模型并没有定义timestamp字段,这会导致运行时报错,建议替换为instance.id或其他能保证任务名称唯一的字段。

内容的提问来源于stack exchange,提问作者Biju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:05:23