芹菜任务与倒计时

时间:2014-07-07 14:45:22

标签: python celery

我正在使用Celery 2.5.1,我试图在20秒后使用countdown来运行任务,但它会立即执行。

我用它作为:

DemoTask.apply_async(countdown = 20)

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:8)

问题很可能不像你在印度那样在正确的时区。通过设置countdown=20,您可能会告诉Celery在3小时前20秒执行任务。

我建议使用pytz library告诉Celery在合适的时间开始任务:

from datetime import datetime, timedelta
from pytz import timezone

# Set timezone: http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
my_tz = timezone('US/Eastern')

DemoTask.apply_async(eta=my_tz.localize(datetime.now()) + timedelta(seconds=20))

如果您使用Django(并在TIME_ZONE中设置settings.py),甚至更容易:

from datetime import timedelta
from django.utils.timezone import now

DemoTask.apply_async(eta=now() + timedelta(seconds=20))

答案 1 :(得分:0)

除了the timezone problem laid out by @Banana之外,请确保将芹菜跳过的the celery configuration option always_eager设置为False - 否则,Celery会忽略倒计时 eta