2015-02-11 7 views
1

Я использую сельдерей внутри проекта django, у меня есть задание на сельдере, которое выполняется каждую минуту и ​​проверяется внутри db, если есть новая задача для запуска, а также заданная конфигурация имеет время начала и продолжительность.Мониторинг задач сельдерея внутри периодических задач

Работа этой периодической задачи является:

  • Начать новую задачу асинхронной, если есть NewOne настроен. (Task.delay (...))
  • Проверьте задание предыдущего начала работает
  • Остановить задачу, которая превышает его длительность (app.control.revoke (...))
  • .... и другие вещи ...

Но вопрос в следующем: что такое «лучшая практика» для мониторинга состояния запущенной задачи асинхронного вызова в периодической задаче?

Я имею в виду, что каждый раз, когда выполняется заданная задача, я получаю из БД все сконфигурированные задачи (начатые, чтобы начать ...), но у меня нет связанного с ним связанного с ним целевого идентификатора сельдерея, я должен сохранить задачу сельдерея id внутри db, чтобы задача db была связана с выполняемой фермером связанной задачи?

Помогло ли мне джанго-сельдерей?

Спасибо.

ответ

1

Сельдерей автоматически отслеживает статус, используя для этого результаты. Если вы хотите сохранить это состояние, используя Django ORM, то да Джанго-сельдерей может помочь с этим:

http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#using-the-django-orm-cache-as-a-result-backend

http://docs.celeryproject.org/en/latest/userguide/tasks.html#result-backends

http://docs.celeryproject.org/en/latest/configuration.html#task-result-backend-settings

Одна вещь, которая может также помощь Сельдерей имеет несколько функции для остановки задач, которые превышают их продолжительность.

Вы можете использовать конфигурацию, чтобы установить глобальные ограничения:

http://docs.celeryproject.org/en/latest/configuration.html#celeryd-task-time-limit

Вы можете установить время истечения срока действия для каждого типа задач с использованием параметров декоратора:

http://docs.celeryproject.org/en/latest/userguide/tasks.html#list-of-options

Вы можете установить время истечения срока действия в запланированном пример:

http://docs.celeryproject.org/en/latest/userguide/calling.html#expiration

+0

Спасибо за ваш ответ, но могу ли я управлять этими задачами, хранящимися внутри бэкэнда результата внутри скрипта python, объявление, если это возможно, где я могу найти пример? ЕЩЕ РАЗ СПАСИБО! –

+0

Какие вещи вы подразумеваете под «управлением» задачами? В общем случае бэкэнд результата предназначен для хранения состояния задач в базе данных, поэтому вы можете легко запрашивать состояние, получать результаты, проверять наличие ошибок и создавать такие вещи, как панели состояния или исторические показатели. –