История изменений

Этот документ содержит заметки об изменениях для выпусков с исправлениями ошибок в серии 4.0.x (latentcall), пожалуйста, смотрите Что нового в Celery 4.0 (latentcall) для обзора того, что нового в Celery 4.0.

4.0.2

дата выхода:

2016-12-15 03:40 PM PST

релиз на:

Спросите Солема

  • Требования.

    • Теперь зависит от Kombu 4.0.2.

  • Задачи: Исправлена проблема с JSON сериализацией group (ошибка keys must be string, выпуск #3688).

  • Рабочий: Исправлена проблема сериализации JSON при использовании inspect active и друзей (проблема #3667).

  • App: Исправлены ошибки saferef при использовании сигналов (проблема #3670).

  • Prefork: Исправлена ошибка с пакетом, требующим аргумент bytes на Python 2.7.5 и более ранних версиях (выпуск #3674).

  • Задачи: Saferepr не обрабатывал юникод в байтовых строках на Python 2 (проблема #3676).

  • Тестирование: Добавлено новое приспособление celery_worker_paremeters.

    Внесено Майклом Хауитцем.

  • Задачи: Добавлен новый аргумент app к GroupResult.restore (проблема #3669).

    Это заставляет метод restore вести себя так же, как конструктор GroupResult.

    Внесено Андреасом Пельме.

  • Задачи: Исправлен сбой проверки типов, когда задача принимает *args на Python 3 (проблема #3678).

  • Документация и примеры улучшений по:

    • BLAGA Razvan-Paul

    • Майкл Хауитц

    • @paradox41

4.0.1

дата выхода:

2016-12-08 05:22 PM PST

релиз на:

Спросите Солема

  • [Безопасность: CELERYSA-0003] Небезопасная конфигурация по умолчанию

    Настройка по умолчанию accept_content была установлена для разрешения десериализации маринованных сообщений в Celery 4.0.0.

    Небезопасное значение по умолчанию было исправлено в версии 4.0.1, и вы также можете настроить версию 4.0.0 на явное разрешение только сериализованных сообщений json:

    app.conf.accept_content = ['json']
    
  • Задачи: Добавлен новый метод для регистрации задач на основе классов (выпуск #3615).

    Для регистрации задачи, основанной на классе, теперь нужно вызвать app.register_task:

    from celery import Celery, Task
    
    app = Celery()
    
    class CustomTask(Task):
    
        def run(self):
            return 'hello'
    
    app.register_task(CustomTask())
    
  • Задачи: Проверка аргументов теперь поддерживает аргументы только с ключевыми словами на Python3 (проблема #3658).

    Внесено @sww.

  • Задачи: Событие task-sent не отправлялось, даже если было настроено на это (проблема #3646).

  • Worker: Исправлена поддержка AMQP heartbeat для пулов eventlet/gevent (выпуск #3649).

  • App: app.conf.humanize() не будет работать, если конфигурация не доработана (проблема №3652).

  • Утилиты: saferepr попытался показать итерации как списки, а отображения как массивы.

  • Утилиты: saferepr не обрабатывал unicode-ошибки при попытке форматирования bytes на Python 3 (проблема #3610).

  • Утилиты: saferepr теперь должен правильно представлять байтовые строки с неасксиальными символами (проблема #3600).

  • Результаты: Исправлена ошибка в elasticsearch, когда метод _index не учитывал аргумент body (проблема #3606).

    Исправление внесено 何翔宇 (Шон Хо).

  • Канвас: Исправлено ValueError в хорде с одним заголовком задачи (проблема #3608).

    Исправление внесено Виктором Холмквистом.

  • Задача: Убедитесь, что у задания на основе класса есть имя перед регистрацией (проблема #3616).

    Исправление внесено Риком Варго.

  • Бит: Исправлена проблема со строками в полке (проблема #3644).

    Исправление внесено Alli.

  • Рабочий: Исправлено KeyError в inspect stats, когда аргумент -O установлен в значение, отличное от fast или fair (проблема #3621).

  • Задача: Повторные задания больше не отправлялись в исходную очередь (проблема #3622).

  • Worker: Python 3: Исправлено сравнение типов None/int в apps/worker.py (проблема #3631).

  • Результаты: Redis имеет новую настройку redis_socket_connect_timeout.

  • Результаты: Бэкенд результатов Redis по ошибке передавал аргумент socket_connect_timeout в соединениях на основе сокетов UNIX, что приводило к сбою.

  • Worker: Исправлено отсутствие логотипа в заставке рабочего при запуске на Python 3.x (проблема #3627).

    Исправление внесено Брайаном Луаном.

  • Деп: Исправлена установка пакета celery[redis] (проблема #3643).

    Исправление внесено Реми Маренко.

  • Деп: Связка celery[sqs] теперь также требует pycurl (проблема #3619).

  • Работник: Больше не соблюдались жесткие временные ограничения (проблема #3618).

  • Рабочий: Журнал ограничения мягкого времени показывал Trues вместо количества секунд.

  • App: Аргумент registry_cls больше не имел никакого эффекта (проблема #3613).

  • Рабочий: Производитель событий теперь использует connection_for_Write (выпуск #3525).

  • Результаты: Бэкенды Redis/memcache теперь используют result_expires для истечения срока действия счетчика хордов (проблема #3573).

    Внесено Тайфуном Сеном.

  • Django: Исправлена команда для обновления настроек с Django (проблема #3563).

    Исправление внесено Франсуа Вороном.

  • Тестирование: Добавлено тестовое приспособление celery_parameters для возможности использования настраиваемых параметров инита Celery. (#3626)

    Внесено Штеффеном Оллнером.

  • Улучшения в документацию внесли

    • @csfeathers

    • **Мусса Таифи

    • Юханнаа

    • **Лоран Пеш

    • **христианин

    • Бруно Алла

    • Стивен Джонс

    • @tnir

    • ГДР!

4.0.0

дата выхода:

2016-11-04 02:00 P.M. PDT

релиз на:

Спросите Солема

См. Что нового в Celery 4.0 (latentcall)docs/whatsnew-4.0.rst).

4.0.0rc7

дата выхода:

2016-11-02 01:30 P.M. PDT

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

  • Имена настроек, связанных с бэкендом результатов базы данных, изменены с sqlalchemy_* -> << 1 >>>.

    Настройки с именами sqlalchemy_ не будут работать в этой версии, поэтому их нужно переименовать. Это последнее изменение, и поскольку они не поддерживались в версии 3.1, мы не будем предоставлять псевдонимы.

  • chain(A, B, C) теперь работает так же, как A | B | C.

    Это означает, что вызов chain() может на самом деле не вернуть цепочку, а вернуть группу или любой другой тип, в зависимости от того, как можно оптимизировать рабочий процесс.

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