Tishka17
В чем сложность? Что-то я не понимаю пока из описания где боль
он же в таск по дефолту кладет полное имя класса с модулем.
Tishka17
и по нему ищет
Vladimir
А ты про это
Tishka17
там конечно можно руками, но никто так обычно не делает
Максим
мне вот тоже проект с селери достался по наследству, вот теперь думаю как выпилить его оттуда 😊
Tishka17
в итоге вместо продуманный структуры сообщения имеем побыстрому прикрученные таски
Tishka17
кто-то тут ещё на стабильность celery жаловался
Bogdan (SirEdvin)
1. да вроде настройка celery с каким-нибудь rabbitmq занимает примерно столько же кода как прям из кода в него лезть
Эм ... нет. Селери довольно много полезных штук делает по умолчанию, которые в сыром rabbitmq надо прикручивать
Vladimir
Из всего, что меня в сельдерее напрягает - это именно конфигурация
Дмитрий
Из минусов не оч удобная дока, чтоб один момент найти пришлось два дня потратить Но это был достаточно глубокий момент деталей реализции, который в целом врят ли нужен много кому
Tishka17
да у меня дока так и не открывается, потому что на сайте сертификат не тот =D
Bogdan (SirEdvin)
Например, одна из довольно странных, но часто полезных штук, это то, что сообщение будет отправлено в очередь в любом случае
Bogdan (SirEdvin)
Там тупо безконечных цикл в wait в одну секунду :)
Tishka17
lol
Bogdan (SirEdvin)
Из-за этого, если брокер не доступен, можно ловить веселые фризы)
Anonymous
Я слабо знаю селери, но меня откровенно выбешивает навязывание своей архитектуры. Либо так, либо нахуй иди. Блядь, это же просто ебаная продвинутая труба, а не хуй с яицами. Эту трубу я хочу подключить в любом месте без выебонов и боли. Но нихуя
Bogdan (SirEdvin)
Мы, собственно, так это и обнаружили, когда у нас тесты зависали на несколько часов из-за того, что кто-то не замокал задачи)
Tishka17
так же как джанго - не wsgi
Bogdan (SirEdvin)
например?
Очереди по умолчанию всегда durable, например
Anonymous
нет, это не труба.
Если у нее на конце должен быть редис или мемкешед или прочая срань, то труба
Bogdan (SirEdvin)
То есть прям можно работать с celery без нормального знания кролика, хотя бы на первыъ этапах
Bogdan (SirEdvin)
Селери в целом довольно хорошо (я бы сказал, даже слишком хорошо) заботится о гарантиях того, что задача будет таки в очереди
Tishka17
То есть прям можно работать с celery без нормального знания кролика, хотя бы на первыъ этапах
ну для этого он и сделан. Вместо того чтобы учить кролика, учишь сельдерей
Anonymous
А если вернуться к изначальной проблеме, то ее expire - это просто интерфейс для того же expire редиски, который не гарантирует нихера
Bogdan (SirEdvin)
Возьмите себе rabbitmq и не страдайте
Bogdan (SirEdvin)
И да, expire еще проверяется в самом селери дополнительно
Tishka17
хз, я redis юзал бы в качестве очерели только если могу в любой момент взять и перегенерировать всю очередь
Bogdan (SirEdvin)
Так же, как и eta
Mikhail
Возьмите себе rabbitmq и не страдайте
А он научился в ipv6 таки?
Bogdan (SirEdvin)
Без понятия, к сожалению, но мне кажется, это прямо не такой существенный минус, что бы его не брать.
Anonymous
Возьмите себе rabbitmq и не страдайте
А он гарантирует expire по времени точно?
Bogdan (SirEdvin)
Вам вот прямо нужно точно или +- 1-5 секунд?)
Anonymous
Пара секунд не проблема.
Anonymous
Но не минус
Tishka17
Еще одна плюшка - селери дает один интерфейс к разным брокерам
с учетом что разные брокеры работают сильно по разному, я даже не знаю насколько это работает
Anonymous
Насколько я вообще понял проблематику - TTL неких записей чуть ли не фундаментальное ограничение если брать точность и надежность. Или лютый оверхед, который никто не хочет, бо случай частный
Bogdan (SirEdvin)
Пара секунд не проблема.
Ну, минут это я загнул. https://www.rabbitmq.com/ttl.html а так вообще написано, что he server guarantees that dead messages will not be delivered using basic.deliver (to a consumer) or included into a basic.get-ok response
Bogdan (SirEdvin)
У задач же бывает ttl, разве нет?
Anonymous
TTL - мы точно про очередь задач?
Про отложенные, которые должны выполнится спустя N
Tishka17
У задач же бывает ttl, разве нет?
наверно, но имхо это нетипичное применение
Tishka17
Про отложенные, которые должны выполнится спустя N
TTL это не про отлоденные задачи. Это про удаление
Bogdan (SirEdvin)
Anonymous
TTL это не про отлоденные задачи. Это про удаление
Это всего лишь частный случай таймера, например, в редиске.
Tishka17
интересно как Celery сделает ETA в случае rabbitmq не заблокировав всю очередь?
Alex
да есть реализации слеери под разные языки
ну как бы формат сообщения там не сложный, JSON получить ты можешь из другого языка.
Bogdan (SirEdvin)
Просто в нормальном брокере сообщений есть прямо "отложенные сообщения"
Bogdan (SirEdvin)
Помоему из всех mq только у него как раз и есть
Anonymous
В редиске есть ета. НО ЕСЛИ ВНИМАТЕЛЬНО ПОЧИТАТЬ, то сорямба
Tishka17
в SQS например нету отложенных сообщений если очередь с гарантией порядка
Anonymous
Чуваки, задумайтесь, как вы будете реализовывать отложенный таск на пайтоне голом или другом ЯП?
Tishka17
вообще не представляю как
Bogdan (SirEdvin)
В python на асинхронщине можно проще простого :)
Tishka17
положу в БД и буду поллить =D
Bogdan (SirEdvin)
А так зависит от требований
Tishka17
но с поллингом БД есть проблемы с exactly one выполнением
Bogdan (SirEdvin)
Я бы все-таки взял rabbitmq или богопротивных nats
Bogdan (SirEdvin)
У меня так сервис уведомлений так и работает, сами задачи в БД, а распределение задач работает на nats
Ivan
но с поллингом БД есть проблемы с exactly one выполнением
можно лочить на каждый полл, но это звучит как боль
Alex
но с поллингом БД есть проблемы с exactly one выполнением
эм… rabbitmq если что тоже не дает гарантии exactly one
Bogdan (SirEdvin)
А, да
Pavel
кафка даёт xD
Tishka17
ну у меня и не было rabiitmq ни разу
Tishka17
кафка и sqs только