芹菜apply_async与eta执行速度超过应有的速度

时间:2014-11-08 09:39:32

标签: celery django-celery

>>> def elp(min):
...     when = datetime.now() + timedelta(minutes=min)
...     print when
...     r = add.apply_async(args=[500,500],eta=when)
...     start = time.time()
...     r.get()
...     end = time.time()
...     elapsed = end-start
...     print elapsed
...
>>> elp(10)

2014-11-08 04:38:01.745000
1.00200009346

使用倒计时的地方

>>> def elp_countdown(min):
...     r = add.apply_async(args=[500,500],countdown=(min*60))
...     start = time.time()
...     r.get()
...     end = time.time()
...     elapsed = end-start
...     print elapsed
...
>>> elp_countdown(0.5)
30.1380000114

为什么执行任务的速度比使用eta时的假设快?

我的添加任务如下,

@task()
def add(x, y):
    return x + y

Celery verison:3.1.16(Cipater)

1 个答案:

答案 0 :(得分:1)

经过一些研究和阅读后,我发现我需要将一个utc日期时间传递给芹菜,因为它的时区默认配置为UTC。

如果有人想知道,请改为:

when = datetime.utcnow() + timedelta(minutes=min)

而不是

when = datetime.now() + timedelta(minutes=min)

将使其正常运作。