Что нового в Celery 4.2 (windowlicker)

Автор:

Омер Кац (omer.drow at gmail.com)

Celery - это простая, гибкая и надежная распределенная система для обработки огромного количества сообщений, предоставляющая операторам инструменты, необходимые для обслуживания такой системы.

Это очередь задач, ориентированная на обработку в реальном времени, а также поддерживающая планирование задач.

Celery имеет большое и разнообразное сообщество пользователей и разработчиков, вам стоит присоединиться к нам on IRC или << 1 >>>.

Чтобы узнать больше о сельдерее, вам следует перейти по ссылке introduction.

Хотя эта версия обратно совместима с предыдущими версиями, важно, чтобы вы прочитали следующий раздел.

Эта версия официально поддерживается на CPython 2.7, 3.4, 3.5 и 3.6, а также поддерживается на PyPy.

Предисловие

Выпуск 4.2.0 продолжает совершенствовать наши усилия по предоставлению вам лучшей платформы для выполнения задач на Python.

Этот выпуск в основном представляет собой исправление ошибок, устраняющее некоторые проблемы и регрессии, обнаруженные в Celery 4.0.0.

Традиционно релизы назывались по названиям треков Autechre. Данный релиз продолжает эту традицию в несколько ином ключе. В каждой основной версии Celery в качестве кодовых имен будут использоваться названия треков разных исполнителей.

Отныне серия 4.x будет называться по названиям треков Aphex Twin. Этот релиз назван в честь его очень известного трека Windowlicker.

Спасибо за вашу поддержку!

- Омер Кац

Стена вкладчиков

A

Примечание

Эта стена была автоматически сгенерирована из истории git, поэтому, к сожалению, она не включает людей, которые помогают в более важных вещах, таких как ответы на вопросы списка рассылки.

Важные замечания

Поддерживаемые версии Python

Поддерживаются следующие версии Python:

  • CPython 2.7

  • CPython 3.4

  • CPython 3.5

  • CPython 3.6

  • PyPy 5.8 (pypy2)

Новости

Бэкенды результатов

Новый бэкенд результатов Redis Sentinel

Redis Sentinel обеспечивает высокую доступность для Redis. Был добавлен новый бэкенд результатов, поддерживающий его.

Бэкенд результатов Cassandra

Введена новая опция конфигурации cassandra_options для настройки клиента cassandra.

Дополнительную информацию см. в разделе Настройки бэкенда Cassandra.

Бэкенд результатов DynamoDB

Новый параметр конфигурации dynamodb_endpoint_url был введен для того, чтобы направить бэкенд результатов на локальную конечную точку во время разработки или тестирования.

Дополнительную информацию см. в разделе Настройки бэкенда AWS DynamoDB.

Исправления совместимости с Python 2/3

Бэкенды результатов CouchDB и Consul принимали байтовые строки без предварительного декодирования их в Unicode. Теперь это больше не так.

Холст

Были устранены многочисленные ошибки, в результате чего работа с Canvas стала гораздо более плавной.

Задачи

Связанные задачи как обратные вызовы ошибок

Мы исправили регрессию, которая возникала, когда связанные задачи использовались в качестве обратных вызовов ошибок. Это работало в Celery 3.x, но вызывало исключение в 4.x до этого выпуска.

И в 4.0, и в 4.1 следующий код не работает:

@app.task(name="raise_exception", bind=True)
def raise_exception(self):
    raise Exception("Bad things happened")


@app.task(name="handle_task_exception", bind=True)
def handle_task_exception(self):
    print("Exception detected")

subtask = raise_exception.subtask()

subtask.apply_async(link_error=handle_task_exception.s())

Представление задач

  • Затенение имен задач теперь работает так, как ожидалось. Затененное имя правильно отображается в цветах, журналах и следах.

  • argsrepr и kwargsrepr ранее не использовались, даже если были указаны. Теперь они работают так, как ожидалось. Для получения дополнительной информации смотрите Сокрытие конфиденциальной информации в аргументах.

Пользовательские запросы

Теперь мы позволяем задачам использовать пользовательские request классы для пользовательских классов задач.

Дополнительную информацию см. в разделе Запросы и пользовательские запросы.

Повторные попытки с экспоненциальным отступлением

Повторные запросы теперь могут выполняться с экспоненциальным отступлением, чтобы не перегружать внешние службы запросами.

Дополнительную информацию см. в разделе Автоматические повторные попытки для известных исключений.

Расширение сфинкса

Задачи должны были автоматически документироваться при использовании Autodoc от Sphinx. В коде, который должен был обеспечить автоматическое документирование, было несколько ошибок, которые теперь исправлены.

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

Вернуться на верх