【问题标题】:Django schedule a "one time" task based on datetime model attributeDjango根据日期时间模型属性安排“一次性”任务
【发布时间】:2014-09-01 07:39:23
【问题描述】:

Django 中解决此类问题的最佳解决方案是什么:

我需要根据对象属性值设置计划时间,以便在达到计划时间时运行“一次性”任务。

对于每个属性更新,计划时间也必须更新。

示例(伪代码)

class Runner(models.Model):
    execute_time = models.DateTimeField()

post_save( update_scheduler, sender=Runner)


def update_scheduler(sender, instance, created, **kwargs):
    if created:
        # set schedule time = instance.execute_time
        create_or_update_schedule(instance.datetime)

使用 Celery 可以做这样的事情吗?更新对象更新的计划时间?

【问题讨论】:

  • 您可以使用eta 属性来安排单个任务。

标签: python django scheduled-tasks celery


【解决方案1】:

按照 Banana 的建议,我使用 eta 解决了这个问题。 这里有一个简单的示例代码:

task.apply_async([ev_objects], eta=my_eta, task_id=my_task_id)

revoke”也可以用来终止尚未开始的任务。这是一个远程控制命令,因此它不适用于 django 数据库解决方案,而只能用于 Redis 或 RabbitMQ。

我仍然searching 寻求使用 Django 数据库撤销任务的解决方案。

【讨论】:

    猜你喜欢
    • 2017-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2011-08-15
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多