170 похожих чатов

Добрый вечер! У меня довольно наболевший вопрос к тем, кто давно,

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

Мой опыт работы с сельдереем несколько месяцев. И весь этот опыт я могу описать исключительно как мучение.

Проблемы:
1) ядро целери представляет собой набор из нескольких библиотек, каждая из которых ведется своей полугруппой разработчиков, которые не слишком оглядываются друг на друга. Каждый новый релиз что-то ломает в совместимости.
2) Они внедряют какие-то экзотические возможности, в то время как самые базовые работают криво. Ишью тянутся годами из одной мажор версии в другую. Большая из них тупо закрывается с комментарием: "у нас на это нет времени и ресурсов", либо "разработка функциональности не профинансирована".
3) Часть заявленных возможностей не работает с rabbitmq, другая - c redis. Про другие вообще говорить не стоит.
4) Совершенно непрозрачный механизм работы с очередями и внутренними счетчиками. Такое ощущение, что никто полностью не понимает, как оно работает. Информацию приходится выуживать из какие-то отдельных комментариев по всей сети.
5) Если бы мне нужна была очередь асинхронных задач, то, мне кажется, проще было бы поднять несколько нод на каком-нибудь асинхронном фреймворке в качестве апстрима за nginx, который бы по раундробину раскидывал бы запросы.
6) Если бы мне нужна была очередь отложенных асинхронных задач, то надежднее было бы полагаться на свой транспорт и свое хранение, а не на какие-то непонятные обертки над amqp и redis.
7) Ни rabbit, ни redis не имеют встроенной поддержки eta. Она реализуется через внутренние счетчики и виртуальные очереди на воркерах. Малейший рассинхрон с временной областью видимости и задачи начинают множиться. То есть, одна из основных идей, может подвести в любой момент - не рассчитал временные окна или какой-то воркер вовремя не отослал acknowledge - лови 50 писем одному пользователю!
8) Не работает на винде (так себе минус, но все же)
9) Мониторинг через flower, который отстает на несколько версий от latest. При этом сам flower агент тоже является подписчиком очереди из-за чего тоже вносит путаницу в распределение и назначение задач. Можно снимать прометеус метрики - их не смотрел.
10) Документация частично неактуальна и специально приукрашивают плюсы, специально скрывая минусы.
11) Если меняется код задачи, а система воркеров распределенная, то менять надо везде с релоудом всех. И тут своими броадкаст сообщениями они вообще вносят хаос в общую обработку.
12) Поддержка джанги тоже где-то с краю. Интеграция делается четвертыми лицами со своим додумыванием. Сюда же дичь с временными зонами. Если использовать что-то кроме utc, то начинается трэш: в логи пишется системное время, внутри воркеров utc, в цветке что-то свое

Почему вы ставите ему звезды на гитхабе? У вас более положительный юзер экспериенс? Вас не подводит eta? Вы молотите сотни и тысячи запросов в минуту и упираетесь именно в транспорт, а не в другие ресурсы? С этим не справился бы крон или свой микро-веб-сервис? Вы тоже чувствуете боль, но какие-то фишки вас заставляют терпеть? Если да, то какие?

2 ответов

7 просмотров

крон и докер больная тема, как раз юзаю celery-beat ибо не смог нормально крон всунуть

Нормально прорвало. Да все городят свои велосипеды очередей обработки чаще всего. А пока велосипед не нагорожен - используется сельдерей.

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

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
@FAssembler ты много с формами работал, как цикл обработки сообщений от окошек надо делать, чтобы IsDialogMessage не ломал ввод в эдиты и навигация по табам работала?
The Bird of Hermes
8
Карта сайта