perminovma
@perminovma

Как работает многопоточность Django?

Здравствуйте!

Пишу сервер для мобильного приложения на ОС Android.
Для того, чтобы я мог посылать на телефоны Push уведомления использую стандартный гугловский сервис GCM, а в Django работаю с ним через django-gcm модуль.

Выглядит все это примерно так: у каждого пользователя Android есть свой идентификатор, и передавая его и сообщение в django-gcm, он посылает его в GCM, а оттуда уже Push-уведомление присылается пользователю на Android. Все просто.

Но, когда я хочу отправить Push сразу всем пользователям, и прохожусь через цикл по всем им (функции отправить сразу всем нет), то такое ощущение, что весь Django виснет и перестает отвечать на запросы других пользователей.

В связи с этим вопрос: а как в Django работает многопоточность? Является ли сервер многопоточным в полной мере?

И как тогда организовывать такие массовые рассылки? Возможно, это стоит делать через какой-нибудь RabbitMQ?

Заранее спасибо за ответ
  • Вопрос задан
  • 5021 просмотр
Пригласить эксперта
Ответы на вопрос 4
mututunus
@mututunus
Backend developer (Python, Golang)
В Django нет многопоточности. Для выполнения задач в "фоне" используйте Celery.
Ответ написан
alternativshik
@alternativshik
Михаил: Если такая рассылка никак не зависит от сервера(не запускается при сабмите формы или вызове вьюхи, например), то можно сделать ее через management commands + cron
Ответ написан
@FireGM
Не по теме, но на джанге реализовывать такое - бэдпрактикс, нет?
Ответ написан
@asmrnv777
В GCM можно отправлять сообщение сразу многим получателям (вроде как до 1024 шт.).
Кроме того, существует что-то вроде "каналов", точной терминологии не помню, почитайте доки по GCM. Суть в том, что приложение подписывается на канал, скажем, /news/social/, и вы отправляете одно сообщение с сервера в этот канал, а получают его все подписчики сразу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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