Что нового в Celery 5.0 (сингулярность)

Автор:

Омер Кац (<< 0 >>>)

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

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

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

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

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

Эта версия официально поддерживается на CPython 3.6, 3.7 и 3.8, а также поддерживается на PyPy3.

Предисловие

Выпуск 5.0.0 - это новый основной выпуск для Celery.

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

Релизы в серии 5.x имеют кодовые названия в честь песен Jon Hopkins. Этот релиз получил кодовое название Singularity.

В этой версии прекращена поддержка Python 2.7.x, который достиг EOL 1 января 2020 года. Это позволяет нам, сопровождающим, сосредоточиться на инновациях, не заботясь об обратной совместимости.

С этого момента мы поддерживаем только Python 3.6 и выше. Мы будем поддерживать совместимость с Python 3.6 до его выхода из эксплуатации в декабре 2021 года.

- Омер Кац

Политика долгосрочной поддержки

Поскольку мы хотим предоставить вам время для перехода, мы объявляем Celery 4.x релизом LTS. Celery 4.x будет поддерживаться до 1 августа 2021 года.

Мы будем принимать и применять исправления для устранения ошибок и проблем безопасности. Однако никаких новых функций в эту версию вноситься не будет.

Celery 5.x не является релизом LTS. Мы будем поддерживать его до выхода Celery 6.x.

Мы находимся в процессе определения нашей политики долгосрочной поддержки. Следите за обновлениями в следующем документе «Что нового».

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

Артем Васильев <artem.v.vasilyev@gmail.com> Ash Berlin-Taylor <ash_github@firemirror.com> Asif Saif Uddin (Auvi) <auvipy@gmail.com> Asif Saif Uddin <auvipy@gmail.com> Christian Clauss <cclauss@me.com> Germain Chazot <g.chazot@gmail.com> Harry Moreno <morenoh149@gmail.com> kevinbai <kevinbai.cn@gmail.com> Martin Paulus <mpaulus@lequest.com> Matus Valo <matusvalo@gmail.com> Matus Valo <matusvalo@users.noreply.github.com> maybe… sybr <58414429+maybe-sybr@users.noreply.github.com> Omer Katz <omer.drow@gmail.com> Patrick Cloke <clokep@users.noreply.github.com> qiaocc <jasonqiao36@gmail.com> Thomas Grainger <tagrain@gmail.com> Weiliang Li <to.be.impressive@gmail.com>

Примечание

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

Обновление с Celery 4.x

Шаг 1: Настройте вызов командной строки

Celery 5.0 представляет новую реализацию CLI, которая не полностью обратно совместима.

Глобальные опции больше не могут располагаться после подкоманды. Вместо этого они должны быть расположены как опция для команды celery, как показано ниже:

celery --app path.to.app worker

Если вы использовали наше руководство Демонизация для развертывания Celery в производстве, вам следует пересмотреть его на предмет обновлений.

Шаг 2: Обновите конфигурацию с новыми именами параметров

Если вы еще не обновили свою конфигурацию при переходе на Celery 4.0, пожалуйста, сделайте это сейчас.

Мы решили продлить период устаревания до версии 6.0, поскольку мы не предупредили об использовании этих устаревших настроек.

Инструкции см. в разделе migration guide.

Шаг 3: Прочитайте важные примечания в этом документе

Убедитесь, что вы не затронуты ни одним из важных замечаний по обновлению, упомянутых в following section.

Вы должны главным образом убедиться, что все изменения в CLI не затрагивают вас. Пожалуйста, обратитесь к New Command Line Interface за подробностями.

Шаг 4: Перенесите свой код на Python 3

Celery 5.0 поддерживает только Python 3. Поэтому вы должны убедиться, что ваш код совместим с Python 3.

Если вы еще не перенесли свой код на Python 3, вы должны сделать это до обновления.

Вы можете использовать такие инструменты, как 2to3 и << 1 >>>, чтобы помочь вам в этой работе.

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

Шаг 5: Обновление до Celery 5.0

В этот момент вы можете обновить своих работников и клиентов новой версией.

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

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

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

  • CPython 3.6

  • CPython 3.7

  • CPython 3.8

  • PyPy3.6 7.2 (pypy3)

Прекращена поддержка Python 2.7 и 3.5

Для Celery теперь требуется Python 3.6 и выше.

Python 2.7 достиг EOL в январе 2020 года. Чтобы сосредоточить наши усилия, мы отказались от поддержки Python 2.7 в этой версии.

Кроме того, Python 3.5 достиг EOL в сентябре 2020 года. Поэтому мы также прекращаем поддержку Python 3.5.

Если вам все еще требуется запустить Celery с помощью Python 2.7 или Python 3.5, вы можете использовать Celery 4.x. Однако мы рекомендуем вам перейти на поддерживаемую версию Python, поскольку для Python 2.7 больше не будут применяться исправления безопасности, а Python 3.5 не поддерживается по практическим причинам.

Комбу

Начиная с этого выпуска, минимальная требуемая версия - Kombu 5.0.0.

Бильярд

Начиная с этого выпуска, минимальная требуемая версия - Billiard 3.6.3.

Пул работников эвентов

Из-за eventlet/eventlet#526 минимально необходимая версия - eventlet 0.26.1.

Пул работников Gevent

Начиная с этого выпуска, минимальная требуемая версия - gevent 1.0.0.

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

Бэкенд результатов Couchbase теперь использует V3 Couchbase SDK.

В результате мы больше не поддерживаем Couchbase Server 5.x.

Также, начиная с этого выпуска, минимальная требуемая версия клиента базы данных - couchbase 3.0.0.

Чтобы убедиться, что ваш Couchbase Server совместим с V3 SDK, обратитесь к их documentation.

Riak Result Backend

Бэкэнд результатов Riak был удален, так как база данных больше не поддерживается.

Клиент Python поддерживает только Python 3.6 и ниже, что не позволяет нам поддерживать его, а также он не поддерживается.

Если вы все еще используете Riak, воздержитесь от обновления до Celery 5.0, пока вы переносите свое приложение на другую базу данных.

Мы приносим извинения за отсутствие предварительного уведомления, но мы считаем, что вероятность того, что вас затронет это изменение, минимальна, поэтому мы и сделали это.

AMQP Result Backend

Бэкенд результатов AMQP был удален, поскольку он был устаревшим в версии 4.0.

Удаленные устаревшие модули

Модули celery.utils.encoding и celery.task были устаревшими в версии 4.0 и поэтому удалены в 5.0.

Если вы ранее использовали модуль celery.utils.encoding, то вместо него вам следует импортировать kombu.utils.encoding.

Если до этого вы использовали модуль celery.task, то вместо него вам следует импортировать непосредственно из модуля celery.

Новый интерфейс командной строки

Интерфейс командной строки был переработан с помощью Click. В результате было внесено несколько изменений:

  • Глобальные опции Postfix, такие как celery worker –app path.to.app или celery worker –workdir /path/to/workdir больше не поддерживаются. Вы должны указать их как часть глобальных опций основной команды celery.

  • celery amqp и celery shell требуют запуска оболочки с помощью подкоманды repl. Теперь вы также можете вызывать определенные команды без оболочки. Для получения подробной информации введите celery amqp –help или celery shell –help.

  • API для добавления пользовательских опций изменился. Подробности см. в documentation.

Щелчок обеспечивает завершение оболочки out of the box. Эта функциональность заменяет наш предыдущий сценарий завершения bash и добавляет поддержку завершения для оболочек zsh и fish.

Сценарий завершения bash был экспортирован в extras/celery.bash для удобства упаковщика.

Интеграция Pytest

Начиная с Celery 5.0, плагин pytest больше не включен по умолчанию.

Инструкции см. в разделе documentation.

Упорядоченные групповые результаты для бэкенда результатов Redis

Ранее результаты групп не были упорядочены по порядку их вызова. В Celery 4.4.7 появилась возможность сделать их упорядоченными.

В настоящее время это поведение является отказным.

Если вы ранее использовали бэкенд результатов Redis, вам может понадобиться отказаться от этого поведения.

Инструкции по отключению этой функции см. в разделе documentation.

Новости

Политика повторных попыток для бэкенда результатов Redis

Политика повторных попыток для бэкенда результатов Redis теперь доступна через опции транспорта бэкенда результатов.

Подробности см. в разделе documentation.

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