【问题标题】:Task updates record in DB only ones仅数据库中的任务更新记录
【发布时间】:2014-11-23 14:41:49
【问题描述】:

我有一个周期性任务,我每分钟运行一次,但我不知道为什么它只在第一次运行时更新我在查询中指定的字段。当我在第一次执行任务后更改值时,它不会变回 0。这是任务:

@shared_task
class my_task():
    one_day_before = timezone.now() - datetime.timedelta(days=1)
    User.objects.filter(status=1, created__lt=one_day_before).update(status=0)

这是我在 celery worker 运行时看到的输出:

[2014-11-23 14:38:34,213: INFO/MainProcess] Received task: users.tasks.my_task[fe16a6e9-0b2c-4099-9e95-29c8501d500a]
[2014-11-23 14:38:34,216: INFO/MainProcess] Task users.tasks.my_task[fe16a6e9-0b2c-4099-9e95-29c8501d500a] succeeded in 0.00161398899945s: <users.tasks.my_task instance at 0x7fd54e12f1b8>

那么你能告诉我我哪里错了吗?我就是做不到。

【问题讨论】:

  • 在芹菜之外,查询工作正常。

标签: python django celery


【解决方案1】:

好吧,我什至不明白我为什么会犯这样的错误。当然它必须被描述为函数(而不是类):

@shared_task
def my_task():
    one_day_before = timezone.now() - datetime.timedelta(days=1)
    User.objects.filter(status=1, created__lt=one_day_before).update(status=0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    相关资源
    最近更新 更多