Работа с сообщениями python

Как использовать Python для работы с системами очередей сообщений

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

Введение в системы очередей сообщений

Системы очередей сообщений, такие как RabbitMQ, Apache Kafka и Amazon SQS, предоставляют надежный механизм для обмена сообщениями между процессами, сервисами и компонентами в распределенных системах. Они обеспечивают асинхронность, расширяемость и устойчивость к сбоям.

Основные понятия, которые нужно знать при работе с очередями сообщений:

  • Producer: компонент, отправляющий сообщения в очередь.
  • Queue: место хранения сообщений, ожидающих обработки.
  • Consumer: компонент, получающий сообщения из очереди и обрабатывающий их.

Работа с RabbitMQ и Python

RabbitMQ — одна из самых популярных систем очередей сообщений, основанная на протоколе AMQP. Для работы с RabbitMQ на Python можно использовать библиотеку pika . Установите ее с помощью pip:

Создание Producer

Пример кода для создания producer, отправляющего сообщение в очередь:

import pika # Устанавливаем соединение с сервером RabbitMQ connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # Объявляем очередь, в которую будем отправлять сообщения channel.queue_declare(queue='hello') # Отправляем сообщение в очередь channel.basic_publish(exchange='', routing_key='hello', body='Hello, World!') print(" [x] Sent 'Hello, World!'") connection.close()

Создание Consumer

Пример кода для создания consumer, обрабатывающего сообщения из очереди:

import pika # Устанавливаем соединение с сервером RabbitMQ connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() # Объявляем очередь, из которой будем получать сообщения channel.queue_declare(queue='hello') # Функция обработки полученного сообщения def callback(ch, method, properties, body): print(" [x] Received %r" % body) # Подписываемся на очередь и указываем функцию обработки сообщений channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True) print(' [*] Waiting for messages. To exit press CTRL+C') channel.start_consuming()

Работа с Amazon SQS и Python

Amazon SQS (Simple Queue Service) — это облачная служба очереди сообщений, предоставляемая Amazon Web Services (AWS). Для работы с Amazon SQS на Python можно использовать библиотеку boto3 . Установите ее с помощью pip:

Читайте также:  Javascript the good parts crockford

Создание Producer

Пример кода для создания producer, отправляющего сообщение в очередь Amazon SQS:

import boto3 # Создаем клиент для работы с Amazon SQS sqs = boto3.client('sqs') # Получаем URL очереди по ее имени queue_url = sqs.get_queue_url(QueueName='my_queue')['QueueUrl'] # Отправляем сообщение в очередь response = sqs.send_message(QueueUrl=queue_url, MessageBody='Hello, World!') print(" [x] Sent 'Hello, World!'")

Создание Consumer

Пример кода для создания consumer, обрабатывающего сообщения из очереди Amazon SQS:

import boto3 # Создаем клиент для работы с Amazon SQS sqs = boto3.client('sqs') # Получаем URL очереди по ее имени queue_url = sqs.get_queue_url(QueueName='my_queue')['QueueUrl'] # Функция обработки полученного сообщения def process_message(message): print(" [x] Received %r" % message) # Получаем сообщения из очереди и обрабатываем их while True: response = sqs.receive_message(QueueUrl=queue_url, MaxNumberOfMessages=1) message = response.get('Messages', []) if message: process_message(message[0]['Body']) sqs.delete_message(QueueUrl=queue_url, ReceiptHandle=message[0]['ReceiptHandle'])

Теперь вы знаете, как использовать Python для работы с системами очередей сообщений, такими как RabbitMQ и Amazon SQS. Удачного кодирования! 🚀

Источник

Создай уведомления с помощью Python

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

Точно, уведомления! Хм, а звуковые или текстовые? Разберемся, что лучше и рассмотрим 3 способа отправки уведомлении на языке Python.

Chime – простой и интересный пакет для создания звуковых уведомлений.Установим пакет:

Импортируем пакет и попробуем его основные функции.

После выполнения кода, прозвучит уведомление, когда код будет выполнен успешно. Теперь протестируем звук, в случае ошибки:

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

Если вы запустите chime.notify_exceptions, то chime.error будет вызываться всякий раз, когда возникает исключение.

Можно сменить звук, поменяв тему с помощью следующего кода:

Читайте также:  Jquery css line height

Если вы работаете в Jupyter notebook, то рекомендую загрузить расширение для быстроты использования.

Команда вызовет chime.success, когда строка / ячейка завершится успешно, в противном случае вызовет chime.error каждый раз, когда возникнет исключение.

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

Рассмотрим способ с текстовым уведомлением на экране.

Данный способ очень удобен, когда вы занимаетесь на своем компьютере какой-то другой задачей параллельно. Данное уведомление однозначно привлечет ваше внимание и не побеспокоит коллег.

Импортируем класс и вызовем метод notify этого класса.

from plyer import notification notify(message = ‘Программа выполнена успешно’, app_name = ‘script’, title=’Готово’)

title – заголовок сообщения уведомления

message – сообщение уведомленияapp_name – имя приложения, запускающего это уведомлениеapp_icon – значок, который будет отображаться вместе с сообщениемtimeout – время отображения сообщения (по умолчанию 10 секунд)

После выполнения кода появится уведомление:

А что если вам уже пора уходить, а код закончит выполняться только через час? Как узнать, что программа выполнилась успешно? И можно ли получить результат этой программы и отправить его коллеге, когда вы уже на пути домой?

Рассмотрим третий способ отправки уведомлений.

Отправка уведомлений по электронной почте — отличный вариант для отложенных сообщений или отправки файлов сразу после завершения программы, даже если вы уже давно забыли про её выполнение. Рассмотрим отправку сообщений на почту outlook, используя модуль win32com.client из пакета win32.

import win32com.client as win32 outlook = win32.Dispatch(‘outlook.application’) # Создаем новый элемент Microsoft Outlook mail = outlook.CreateItem(0) # Адрес получателя письма mail.To = ‘[email protected]’ # Тема письма mail.Subject = ‘Документ’ # Содержание письма mail.Body = ‘Добрый день! Файл с результатом во вложении.’ # Добавляем вложение attachment = «C:/Users/Документ.docx» mail.Attachments.Add(attachment) # Отправляем письмо mail.Send()

Читайте также:  Php copy files ftp

Успешно! Письмо получено адресатом.

В данной статье рассмотрено несколько способов создания уведомлений при помощи языка Python. Используйте способы выше в зависимости от ситуации и не забывайте про свою программу 😉

Источник

Оцените статью