<MyRusakov.ru />

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

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

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

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

Помимо самого курса Вас ждут ещё 3 бесплатных ценных Бонуса: «Технология Windows Presentation Foundation», «Создание библиотеки классов» и «Правильная работа со справочником».

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

Подписавшись по 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):

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