Рубрики
Без рубрики

Pypubsub – Создание вашего первого приложения для публикации Подписаться в Python

Сегодня мы быстро смотрим на шаблон связи Pubsub. Оформить заказ это 2-минутное введение!

Автор оригинала: Chris.

Вы проверили новости сегодня или получили рассылку электронной почты от компании? Оба режима связи Следуйте паттерну связи публикации-подписки. Эта статья покажет вам, как реализовать свою собственную систему Pubsub в Python, используя гибкий Pypubsub библиотека. Если вы уже знаете о концепции Pubsub, не стесняйтесь двигаться вперед в реальное мясо: внедрение системы Pubsub в Python! В противном случае оставайтесь со мной, чтобы полировать ваши научные основы!

Концепция Pubsub

Этот тип связи является одним из способов. Информационные потоки из издателя для абонентов. Издатель создает информацию, абонент потребляет информацию. Таким образом, компьютерные ученые называют этот шаблон связи публикуют и подписываются парадигма – Pubsub Отказ

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

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

Примером является Google News. Скажите им свои интересные темы и ваши языковые предпочтения. Затем Google подталкивает соответствующие новости на ваш смартфон.

Сила этой парадигмы связи в том, что она декуцирует отправителя и приемник. Они даже не должны знать друг друга. Вы когда-либо получали рекомендации статьи Google News из источников, которые вы даже не слышали? Система Pubsub Google действует как брокер, который заботится о организации, нахождении, фильтрации и доставке информации.

Для компьютеров этот развязник также велик. Например, ваши умные домашние устройства могут подписаться на службу погоды, чтобы быстро реагировать. Ваше умного домашнего устройства необходимо знать только один адрес – системы Pubsub. Огромное преимущество для систем с миллионами участников, таких как Интернет вещей.

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

Обзор системы Pypubsub

Прежде чем мы начнем, вы должны понимать несколько концепций библиотеки Pypubsub. Начнем с краткого обсуждения различных ролей и особенностей Pypubsub.

Отправитель сообщения

В публикации подписания систем это все о сообщении. Отправки отправляют сообщения, слушатели подписываются на сообщения. Вы отправляете сообщение PUBSUB, позвонив pub.sendmessage () Отказ

Слушатель сообщения

Слушает сообщения данной темы. В Pypubsub прослушиватели сообщений являются Callables, то есть функции, выполняемые системой Pypubsub на каждом сообщении данной темы.

Тема сообщения

Каждое сообщение имеет тему. Вы можете определить иерархию тем с родительскими темами и детскими темами. Родительская тема более общего, детская тема менее общая.

Данные сообщения

Сообщение не только состоит из темы, но и некоторых данных или полезных нагрузок. Вы можете опровергнуть произвольные данные в качестве аргументов ключевых слов в методе отправки pub.sendmessage (тема, ** Данные) Отказ

Доставка сообщения

Все отправленные сообщения данной темы доставляются слушателям, зарегистрированным для этой темы или любой родительской темы. Вы также можете прослушать все темы, зарегистрировавшись в корень всех тем – родитель всех называемых All_topics Отказ

Нет никаких гарантий, касающихся заказа доставки сообщений. Сообщения могут появляться из строя, но поставляются синхронно: перед поставляемым сообщением к следующему слушателю предыдущий слушатель должен завершить свою функцию Callable Listener. Другими словами, мы не запускаем несколько потоков на каждом слушателе, чтобы доставить сообщения параллельно. Вместо этого мы доставляем сообщения одного слушателя за раз.

Непомышленность сообщений

Слушатели не должны изменять содержание сообщения, которое они получают. Однако это не проверяется системой Pypubsub, поэтому слушатели могут, теоретически, сделайте это!

Направление сообщения

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

Pypubsub Установка

Это один из самых популярных модулей Python Pubsub. Вы можете получить это здесь Отказ

Установка : Запустите следующий код в вашем терминале, оболочке или командной строке (операционная система).

pip install PyPubSub

Pypubsub Создайте свое первое приложение

Простой пример Pypubsub дан следующим приложением:

from pubsub import pub


def listener_alice(arg):
    print('Alice receives news about', arg['headline'])
    print(arg['news'])
    print()


def listener_bob(arg):
    print('Bob receives news about', arg['headline'])
    print(arg['news'])
    print()


# Register listeners
pub.subscribe(listener_alice, 'football')
pub.subscribe(listener_alice, 'chess')
pub.subscribe(listener_bob, 'football')

# Send messages to all listeners of topics
pub.sendMessage('football', arg={'headline': 'Ronaldo',
                                 'news': 'Sold for $1M'})
pub.sendMessage('chess', arg={'headline': 'AI',
                              'news': 'AlphaZero beats grandmaster Carlsen'})

Во-первых, вы создаете два слушателя – это вызываемые функции, которые могут быть выполнены системой Pypubsub:

  • lisker_Alice (Arg)
  • listener_bob (arg)

Оба слушателя получают данные arg это Словарь С двумя клавишами: «заголовок» и «Новости» Отказ Это может быть уточнение с заголовком и фактической новостью.

Во-вторых, вы убедитесь, что оба слушателя подписываются на одну или несколько тему, чтобы они звонили, как только сообщение относится к теме. Боб слушает тему «Футбол» , хотя Алиса слушает двумя темами «Футбол» и «Шахматы» Отказ Чтобы добиться этого, вы используете функцию pubscrise (тема, * данные) Отказ

В-третьих, вы отправляете две «новости» сообщения:

  • Тема: 'футбол'
  • Тема: «Шахматы»

Выход следующий:

Alice receives news about Ronaldo
Sold for $1M

Bob receives news about Ronaldo
Sold for $1M

Alice receives news about AI
AlphaZero beats grandmaster Carlsen

Вы можете увидеть, что Alice получает новостные сообщения о обеих тем «Футбол» и «Шахматы» Пока Боб только получает новостное сообщение о теме «Футбол» Отказ

Это самое простое использование Phance Publish And Conclibe в Python.

использованная литература

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Оригинал: “https://blog.finxter.com/publish-subscribe-pypubsub/”