Django, целесообразно ли использовать celery+RabbitMQ для задачи?
Собственно, хочу организовать голосование на сайте за фотографии, итог в десятибалльной системе.
В данный момент вижу 2 решения:
1) создать форму с голосованием, по submit прогонять формулу и сохранять в бд значение обновленного рейтинга.
2)celery+ RabbitMQ, посылать сообщение через колика, обновлять рейтинг либо в celert по времени, либо после нескольких голосов, либо... не знаю, не разбирался в этих технологиях)
Сейчас мне кажется 1 способ выгодней с маленьким кол-вом голосований, 2-й для больших нагрузок.
Главный вопрос - правильно ли я понял назначение второй связки? Про них столько пишут, но я так и не понял в каких реально случаях они используются. Может, для решения этой задачи есть более подходящие варианты?
Еще вспомнил что нужны ачивки, для них тот же самый вопрос.)
Заранее спасибо за ответы.
Для больших нагрузок используйте redis, туда сохранайте результаты голосования и айди модели, потом раз в час например синхронизируйте данные в базу с помощью celery, в любом случае не делайте update в базу на счётчиках и голосованиях.
Спасибо за ответ. Вообще не думал что Redis можно использовать в таких целях, воспринимал его исключительно как БД, надо будет разбираться что это такое..
А зачем тогда вообще нужен rabbitMQ? Не понимаю для каких задач)
rabbitMQ это сервер очереди задач, например вам надо отправить десять тысяч имейлов, тогда вы просто создаёте задачу и отправляете её в rabbitmq она в бекраунде обрабатывается и не нагружает ваш проект, сам сервер может физически вообще быть где угодно (ещё можн отупа отправлять задачи которые долго выполняются например обработка видео или изображений). А Redis стандартный инструмент для кеширования, работает супер быстро и в основном используется для таких задач как ваша.