Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

И, наконец, ещё одна значимая область бэкенда - это фоновые задания. Обычно взаимодействие с пользователем происходит в формате "запрос-ответ": пользователь отправил запрос, бэкенд сходил в БД, достал данные и отдал их в ответе. Однако иногда в результате запроса требуется запустить какое-либо задание, окончания которого не нужно дожидаться "здесь и сейчас" - например, при бронировании стиральной машинки мы хотим отправить пользователю уведомление в ВК за 10 минут до начала бронирования. Для выполнения таких "фоновых" заданий требуется отдельный механизм.

...

По сути он позволяет с помощью специального декоратора объявить python-функцию как асинхронную задачу. Такую функцию можно вызывать как обычную функцию (тогда она будет выполняться в процессе Django в процессе обработки запроса пользователя), а можно вызывать как асинхронную - тогда django вместо прямого выполнения функции добавит сообщение о необходимости выполнить функцию в специальную очередь и "забудет". В качестве специальной очереди используется специальная база данных сообщений (она называется "брокер сообщений") RabbitMQ. 

Итак, Django отправляет сообщения в RabbitMQ о том, что надо выполнить функцию. Django выступает в роли "Producer" - отправщика. А кто эту функцию по-факту выполняет?

...