celerybeat自动禁用定期任务



我想使用django-celeb的管理界面为celeb创建一个周期性任务。我设置了一个任务,当手动或通过脚本调用时,它运行得很好。它只是无法通过快速节拍。根据调试日志,第一次检索时任务被设置为enabled = False,我想知道为什么。

当添加周期性任务并将[1, False]作为位置参数传递时,该任务将自动禁用,我看不到任何进一步的输出。当添加时没有参数,任务会被执行,但会立即引发异常,因为我没有提供所需的参数(有道理)。

有人看到这里出了什么问题吗?

提前谢谢。

这是提供参数后的输出:

[DEBUG/Beat] SELECT "djcelery_periodictask"."id", [...] 
             FROM "djcelery_periodictask" 
             WHERE "djcelery_periodictask"."enabled" = true ; args=(True,)
[DEBUG/Beat] SELECT "djcelery_intervalschedule"."id", [...] 
             FROM "djcelery_intervalschedule" 
             WHERE "djcelery_intervalschedule"."id" = 3 ; args=(3,)
[DEBUG/Beat] SELECT (1) AS "a" 
             FROM "djcelery_periodictask" 
             WHERE "djcelery_periodictask"."id" = 3  LIMIT 1; args=(3,)
[DEBUG/Beat] UPDATE "djcelery_periodictask" 
             SET "name" = E'<taskname>', "task" = E'<task.module.path>', 
                 "interval_id" = 3, "crontab_id" = NULL, 
                 "args" = E'[1, False,]', "kwargs" = E'{}', "queue" = NULL, 
                 "exchange" = NULL, "routing_key" = NULL, 
                 "expires" = NULL, "enabled" = false, 
                 "last_run_at" = E'2011-05-25 00:45:23.242387', "total_run_count" = 9, 
                 "date_changed" = E'2011-05-25 09:28:06.201148' 
             WHERE "djcelery_periodictask"."id" = 3; 
             args=(
                   u'<periodic-task-name>', u'<task.module.path>', 
                   3, u'[1, False,]', u'{}', 
                   False, u'2011-05-25 00:45:23.242387', 9, 
                   u'2011-05-25 09:28:06.201148', 3
             )
[DEBUG/Beat] Current schedule:
<ModelEntry: celery.backend_cleanup celery.backend_cleanup(*[], **{}) {<crontab: 0 4 * (m/h/d)>}
[DEBUG/Beat] Celerybeat: Waking up in 5.00 seconds.

编辑:它适用于以下设置。我仍然不知道为什么它不适用于django芹菜

CELERYBEAT_SCHEDULE = {
    "example": {
        "task": "<task.module.path>",
        "schedule": crontab(),
        "args": (1, False)
    },
}

我遇到了同样的问题。请确保参数是JSON格式的。例如,尝试将位置args设置为[1,false]——小写"false"——我刚刚在django-celenie实例(2.2.4版本)上测试了它,它成功了。

对于关键字args,使用类似于{"name":"aldarund"}

的内容

我也遇到了同样的问题。

在djcelet中描述PeriodicTask模型("JSON编码的位置参数"),与Evan的答案相同。我尝试在保存之前使用python-json-lib进行编码。

和我一起工作

import json 
o = PeriodicTask()
o.kwargs = json.dumps({'myargs': 'hello'})
o.save()

芹菜版本3.0.11

CELERYBEAT_SCHEDULE = {
    "example": {
        "task": "<task.module.path>",
        "schedule": crontab(),
        "enable": False
    },
}

我试过了,结果成功了。我在芹菜节拍v5.1.2 上运行

相关内容

  • 没有找到相关文章

最新更新