Ошибка декодирования Unicode в Celery при попытке прочитать результаты из очереди Redis

Вместо

$(this).on("click", "a", function(){});

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

$(this).on("click", "*", function(){});

или селектор атрибутов, если вы хотите выбрать элементы, имеющие атрибут href:

$(this).on("click", "[href]", function(){});

Но этот код не является хорошей идеей:

<span hre="/abc">abc</span>

, так как span не должен иметь href. И вы ошиблись href, вместо этого вы набрали только hre.

3
задан Della 22 January 2019 в 01:40
поделиться

1 ответ

Если ваш рабочий процесс должен возвращать ответы в кодировке utf8, то это, скорее всего, не отсутствующая зависимость, а другая версия библиотеки или что-то не так с рабочим процессом celery, установленным на вашем сервере.

Существует известная проблема с сообщениями об ошибках возврата сельдерея, которые несовместимы с кодировкой utf-8, хотя спецификации говорят, что так и должно быть. Есть также множество задокументированных ошибок в более старых версиях (исправленных в более новых версиях), которые использовали неправильные или несовпадающие кодировки, особенно при обработке json.

К сожалению, вы видите сообщение с жалобой на то, что первый символ результата (0x80) является недействительным, вместо того, чтобы видеть возвращаемую фактическую ошибку (или неправильно закодированные данные).

Чтобы отладить это, активируйте достаточно регистрации, чтобы увидеть возвращаемые фактические данные или результат ошибки, и работайте оттуда.

В качестве альтернативы, вы можете обрабатывать входящие данные как двоичные, а не как utf8, что позволило бы байтам проходить без потерь. Они по-прежнему не будут читаться как символы utf8 или ascii, но по крайней мере вы их получите.

Вы можете увидеть ряд способов, которыми другие люди неожиданно обрабатывали данные, не относящиеся к utf8 , здесь .

0
ответ дан Craig.Feied 22 January 2019 в 01:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: