максимальное (ограниченное) значение для CELERYD_TASK_TIME_LIMIT?

мы делаем сумасшедшие забавные вещи с django-celery. Несколько наших задач требуют времени, и мы хотели бы позволить им делать свое дело. Я попытался установить для CELERYD_TASK_TIME_LIMIT большое значение, например 86400 (24 часа), но мои задачи все еще сообщают о TimeLimitExceeded через 5 минут. Я перечитывал документацию больше раз, чем хотел бы запомнить, но не могу найти ничего, что бы ссылалось ни на значение по умолчанию для CELERYD_TASK_TIME_LIMIT, ни на максимальное значение.

Два действительно ценных вопроса для нас:

  1. Какое максимальное значение для CELERYD_TASK_TIME_LIMIT? (сейчас кажется 5 минут или 300)
  2. Почему я не могу установить для параметра CELERYD_TASK_TIME_LIMIT значение None? (да, я почти уверен, что понимаю последствия потенциальных рабочих-зомби)

В настройках.py

CELERYD_TASK_TIME_LIMIT = 86400 #24 hours
CELERYD_TASK_SOFT_TIME_LIMIT = 86400

person Cahlan Sharp    schedule 26.03.2012    source источник
comment
в качестве дополнения, вот рабочий журнал для конкретной задачи: [2012-03-26 18:32:00,025: INFO/MainProcess] Got task from broker: asynch_periodic_update[e3a41c84-f070-4c68-a822-0a223efe1a42] [2012-03-26 18:37:00,403: ERROR/MainProcess] Task asynch_periodic_update[e3a41c84-f070-4c68-a822-0a223efe1a42] raised exception: TimeLimitExceeded()   -  person Cahlan Sharp    schedule 26.03.2012
comment
Выяснилось, что это была ложная тревога. Наш скрипт для запуска воркеров передавался с аргументом ограничения времени в 300 секунд (отсюда и пять минут). Может быть, моя неспособность найти этот решающий аргумент поможет указать кому-то другому на похожее решение.   -  person Cahlan Sharp    schedule 27.03.2012
comment
Я в похожей проблеме. Насколько я знаю, мы не передаем аргумент о сроках. Я установил CELERYD_TASK_TIME_LIMIT в настройках на 86400, но я продолжаю получать ошибку TimeLimitExceed: 300s.   -  person dannyroa    schedule 23.05.2012


Ответы (1)


Чтобы ответить на ваш вопрос о значениях по умолчанию... значения по умолчанию для CELERYD_TASK_TIME_LIMIT и CELERYD_TASK_SOFT_TIME_LIMIT равны None. Эти значения не задокументированы, и простой grep кодовой базы вам тоже не сильно поможет. Я записал все значения .conf приложения, чтобы выяснить это самостоятельно:

>>> import celery
>>> app = celery.Celery()
>>> app.conf
person David Morton    schedule 06.11.2015