Фоновая обработка в Джанго без сельдерея - PullRequest
14 голосов
/ 04 января 2012

У меня очень маленькая часть сайта Django, которая поддерживает состояние модерируемого сеанса чата между двумя пользователями. По сути, первый пользователь говорит в течение 3 минут (и никто другой не может), затем второй пользователь говорит, затем 30-секундная пауза, и процесс повторяется еще один раз. В настоящее время я использую базу данных и модель RoomState для управления текущим состоянием комнаты (кто может говорить и т. Д.). На переходы состояний влияет то, что клиент отправляет сообщение AJAX POST «ping» каждые 10 секунд одному из моих представлений, которое проверяет, пора ли менять состояние.

Это работает, но определенно чувствует себя хакером. Мне было интересно, есть ли что-то более легкое, чем django-celery + rabbitmq для управления недолговечными фоновыми задачами по таймеру. Я понимаю, что природа сети / Django не имеет состояния, но я просто хотел посмотреть, есть ли у кого-нибудь простое предложение по управлению переходами состояний более надежным способом.

Ответы [ 3 ]

16 голосов
/ 13 июля 2012

Автор django-utils здесь, я бы предложил попробовать мой новый проект Huey - с более богатым набором функций, лучшими документами, более стабильными и работающими с любой структурой Python (включая django). Docs .

7 голосов
/ 04 января 2012

Я знаю только одну альтернативу Сельдерей , которая является более легкой: Очередь в django-utils .

Другой способ - использовать модуль подпроцесс напрямую, но вам, вероятно, придется решить некоторые проблемы, которые уже решены в Celery и django-utils .

5 голосов
/ 07 ноября 2015

Я бы порекомендовал django-background-tasks . Я использовал его в нескольких проектах, и это действительно хорошо, как простой бегун задач. Также было рекомендовано в Two-Scoops of Django .

...