LINUX.ORG.RU

Изменябельность celery tasks - можно ли?

 , ,


0

1

Привет! Есть celery task (rabbitmq на бекенде), которий считает количество переходов пользователя по ссилке (которая лежит в об’екте джанги). Как результат - толпа маленьких задач по +1 в каунтере. Можно ли при добавлении каждой новой задачи как-то искать в уже существующих и найдя изменять их (то есть чтоб не по +1 а по +100 шло)?

По сути, ты заменяешь одну базу данных (postgresql, mongodb whatever) на две (сначала rabbitmq, затем уже твоя postgresql). Зачем это делать?

Основная цель выносить задачи — если они занимают много времени, требуют каких-то вычислений или взаимодействий с сетью. В данном случае (статистика) лучше вообще не делать её через celery.

kost-bebix ★★
()
Ответ на: комментарий от kost-bebix

Зачем это делать?

При даунтаймах, смена схемы, свитч мастера и т.д., данные не теряются. Приложение без проблем можно переключить в RO, а статистику потом накатить. К тому же, при хорошей нагрузке, запись в БД на каждый реквест — это пичаль.

Другая проблема, что ТС использует celery (абсолютно лишняя сущность в этой задаче), когда здесь напрашивается обычный pub/sub, причем в консьюмере можно значения схлопнуть как раз.

baverman ★★★
()
Ответ на: комментарий от baverman

При даунтаймах, смена схемы, свитч мастера и т.д., данные не теряются.

Какие конкретно данные не теряются? Как раз наоборот, без использования celery данных теряется меньше.

Приложение без проблем можно переключить в RO, а статистику потом накатить.

Переключаешь приложение в RO — а статистика УЖЕ накатана.

К тому же, при хорошей нагрузке, запись в БД на каждый реквест — это пичаль.

Запуск каждой задачи celery — это запись в БД. И это не отменяя статистики.

Другая проблема, что ТС использует celery (абсолютно лишняя сущность в этой задаче), когда здесь напрашивается обычный pub/sub, причем в консьюмере можно значения схлопнуть как раз.

Глупость какая-то. Celery — это и есть pub/sub (точнее, механизм поверх него).

kost-bebix ★★
()
Ответ на: комментарий от kost-bebix

facepalm. Ты какой-то дурачок. Пусть кто-нибудь другой разжевывает. Я предельно устал сегодня.

baverman ★★★
()
Ответ на: комментарий от kost-bebix

при каждом реквесте юзеру прийдется ждать пока Something.save() произойдет. А база медленная. посему и кидаем в celery: и редирект происходит немедленно, и считает статистику.

ambivalentno
() автор топика
Ответ на: комментарий от ambivalentno

то ж signals в джанге, не так ли?

Нет. Ключевые слова: message queue, producer, consumer.

baverman ★★★
()
Ответ на: комментарий от ambivalentno

А база медленная

Во-первых, с каких это пор «база медленная»? Во-вторых, с чего ты взял, что база, которая содержит celery-задачи (rabbitmq, например) будет быстрее того же постгреса? И то и то база, операции одинаковой сложности. Тупость, короче.

kost-bebix ★★
()
Ответ на: комментарий от baverman

Тут в соседнем треде упарываются по плюсам - тебе туда.

ComradeDOS
()
Ответ на: комментарий от baverman

Да, очередная тупость от бебикса.

Да успокойся ты уже.

kost-bebix ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.