2014-01-03 4 views
1

У меня есть простой Django сельдерей задачи, как:Почему график Django-Celery длится ETA?

@task(name="upload_file_to_cdn", max_retries=10) 
def upload_file_to_cdn(file_id): 
    stuff 

Когда я запускаю это через оболочку Джанго:

./manage shell 
from myapp.tasks import upload_file_to_cdn 
upload_file_to_cdn.apply_async(args=(123,)) 

отчеты Сельдерей он работает сразу:

tail -f /var/log/celeryd.log 
[2014-01-02 22:54:18,694: INFO/MainProcess] Received task: tasks.upload_file_to_cdn[6e58b72b-8832-427d-a6b8-574f71ac9baa] 
[2014-01-02 22:54:18,698: DEBUG/MainProcess] Task accepted: tasks.upload_file_to_cdn[6e58b72b-8832-427d-a6b8-574f71ac9baa] pid:5007 
[2014-01-02 22:54:18,714: WARNING/Worker-1] Uploading file 123... 

Однако, когда Я запускаю ту же самую строку upload_file_to_cdn.apply_async(args=(123,)) из вида Django, все, что я вижу в celeryd.log:

[2014-01-02 22:47:04,006: INFO/MainProcess] Received task: tasks.upload_file_to_cdn[cb8be827-4604-4aa8-81b0-879657827e63] eta:[2014-01-03 03:47:19.004160-05:00] 

Как вы можете видеть, он не только сразу же запускает задачу, но и устанавливает ETA примерно через 6 часов! Почему это?

+0

Я не знаю, но предположим, что вы каким-то образом настроили его, так как нет обратного отсчета по умолчанию, используемого djcelery. – asksol

ответ

0

Проблема была вызвана различными версиями в пакетах Python django-celery/celery, установленных на отдельных хостах, запускающих и выполняющих задачу. Один использовал celery==3.1.7, тогда как другой использовал celery==3.1.1, и это различие было достаточно, чтобы вызвать поведение. Синхронизация версий исправила проблему.