Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
2 / 2 / 7
Регистрация: 08.05.2013
Сообщений: 139

Контекстный менеджер для коннекта к RabbitMQ

04.02.2021, 01:37. Показов 2510. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь реализовать свой контекстный менеджер через либу pika

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pika
 
 
class RabbitConnection:
    def __init__(self, host, user, password, queue_name, port=5627):
        self.host = host
        self.user = user
        self.password = password
        self.port = port
        self.queue_name = queue_name
 
    def __enter__(self):
        credentials = pika.PlainCredentials(self.user, self.password)
        parameters = pika.ConnectionParameters(
            host=self.host,
            port=self.port,
            credentials=credentials
        )
        self.connection = pika.BlockingConnection(parameters)
        self.channel = self.connection.channel()
        self.channel.queue_declare(queue=self.queue_name)
        return self.channel
 
    def __exit__(self):
        self.connection.close()
и дальше юзаю его в простой джанговской вьюги

Python
1
2
3
4
5
6
7
8
9
10
def send_message(request):
    message = request.GET['message']
    queue_name = 'hello'
    with RabbitConnection(settings.RABBIT_HOST, settings.RABBIT_USER, settings.RABBIT_PASSWORD, queue_name) as rc:
        rc.basic_publish(
            exchange='',
            routing_key=queue_name,
            body=message,
        )
    return HttpResponse()
и получаю вот такую ошибку pika.exceptions.AMQPConnectionError на строке self.connection = pika.BlockingConnection(parameters)

При этом без контекстного менеджера вот такой код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def send_message(request):
    message = request.GET['message']
    queue_name = 'hello'
    credentials = pika.PlainCredentials(settings.RABBIT_USER, settings.RABBIT_PASSWORD)
    parameters = pika.ConnectionParameters(
        host=settings.RABBIT_HOST,
        port=5672,
        credentials=credentials
    )
    connection = pika.BlockingConnection(parameters)
    channel = connection.channel()
    channel.queue_declare(queue='hello')
    channel.basic_publish(
        exchange='',
        routing_key='hello',
        body=message,
    )
    connection.close()
    return HttpResponse()
работает на ура

В чем тут косяк?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.02.2021, 01:37
Ответы с готовыми решениями:

Контекстный менеджер
Добрый день! Помогите, пожалуйста исправить код к требованию преподавателя. Заранее спасибо! class File(): def...

Контекстный менеджер с классом
Здравствуйте, киберфорумцы. Я бы хотел сделать, чтобы внутри контекстного менеджера были доступны классы/функции. Я пробовал, добавить в...

Можете ли создать игры танчики для 2 пользователей на 1 устройстве или же через RabbitMQ
Нужно создать игру танчики для хотябы для 1 пользователя

1
2 / 2 / 7
Регистрация: 08.05.2013
Сообщений: 139
04.02.2021, 12:01  [ТС]
Лучший ответ Сообщение было отмечено DmFat как решение

Решение

Нашел.

порт не тот указал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2021, 12:01
Помогаю со студенческими работами здесь

Подскажите драйвер для коннекта к oracle
очень нужно подскажите драйвер для коннекта к oracle

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

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

как сгенерить строку коннекта для MS SQL Server-а?
Как будет выглядеть строка коннекта для MS SQL Server-а, подобной этой: db.Open 'DSN=ishop; UID=sa;PWD=;database=ishop' можно ли...

Нужно создать программу для проверки коннекта пользователя к SQL на С#
Нужно создать программу для проверки пользователя к бд) но я не знаю даже как начать на какой платформе,винформс или консоль,нужно чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru