История изменений¶
Этот документ содержит заметки об изменениях для выпусков с исправлениями ошибок в серии 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
Майкл Хауитц
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)Внесено Штеффеном Оллнером.
Улучшения в документацию внесли
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()
может на самом деле не вернуть цепочку, а вернуть группу или любой другой тип, в зависимости от того, как можно оптимизировать рабочий процесс.