<MyRusakov.ru />

Программирование на C++ с Нуля до Гуру

Программирование на C++ с Нуля до Гуру

Данный курс научит Вас программировать на языке C++, который, несмотря на свой почтенный возраст, необычайно сильно востребован. Курс состоит из 6 разделов, посмотрев которые и выполнив все упражнения, Вы с нуля освоите этот язык и сможете создавать самые разные проекты любой сложности на C++.

Для закрепления материала из уроков к ним идёт множество упражнений.

Дополнительно к курсу идёт вспомогательная система, которая не даст Вам забросить начатое на полпути.

Также вместе с курсов Вы получаете Бонус "Программирование на C++ в Unreal Engine", в котором Вы научитесь создавать игры на C++ с использованием этого движка.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Зачем Вы изучаете программирование/создание сайтов?

Очереди сообщений в Python

Очереди сообщений в Python

Когда вы работаете с приложениями, интенсивно использующими данные, длительные задачи могут серьезно замедлить работу ваших пользователей.

Современные пользователи ожидают, что страницы загружаются мгновенно, но выполнение задач с большим объемом данных может занять несколько секунд или даже минут. Как сделать так, чтобы пользователи работали быстро, но при этом выполняли сложные задачи?

Если мы хотим, чтобы у пользователей была быстрая загрузка нашего приложения, нам нужно будет переложить часть работы с нашего веб-сервера. Для этого пригодятся такие структуры как workers и Message Queues или очереди сообщений иначе.

Один из способов сделать это - асинхронность. Пока веб-сервер загружает следующую страницу, второй сервер выполняет необходимые нам вычисления в фоновом режиме. Эти фоновые, ориентированные на задачи серверы и называются workers.

Хотя обычно у вас есть только один или несколько веб-серверов, отвечающих на запросы пользователей, у вас может быть много рабочих серверов, которые обрабатывают задачи в фоновом режиме.

Затем эти рабочие могут вносить изменения в базу данных, обновлять пользовательский интерфейс с помощью веб-перехватчиков или обратных вызовов, добавлять элементы в кэш, обрабатывать файлы, отправлять электронные письма, ставить в очередь будущие задачи и многое другое! В то время как наш основной веб-сервер остается свободным, чтобы отвечать на запросы пользователей.

Очереди сообщений.

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

Когда workers становится доступным, он берет первую задачу из начала очереди и начинает обработку. Если у нас много рабочих серверов, каждый выполняет задание по порядку. Очередь гарантирует, что каждый workers получает только одну задачу за раз и что каждая задача обрабатывается только одним работником.

Таким менеджером очередей для Python является Celery.

Celery позволяет web приложениям Python быстро реализовывать очереди задач для многих рабочих серверов. Он принимает независимые задачи, т.е. запросы пользователей и распределяет их между рабочими серверами - workers, а также прослушивает брокера сообщений отдельный сервер для поддержания очереди задач. Он принимает, новые запросы от клиентов и следит за прогрессом и статусом задач и рабочих серверов.

При использовании Celery c Django, общий принцип работы таков:

Django создает задачу (функция Python) и сообщает Celery, что надо добавить ее в очередь. Celery помещает эту задачу в Redis (освобождая Django для продолжения работы над другими вещами). На отдельном сервере Celery запускает workers, которые могут выполнять задачи. Эти рабочие сервера слушают Redis. Когда приходит новая задача, один worker берет ее и обрабатывает, записывая результат обратно в Celery.

Таким образом, используя очереди задач в web приложении, можно уменьшить время отклика при одновременном обращении множества пользователей.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.