Я работаю над проектом потребительского клиента.
Мне нужно создать клиентский класс, потребительский читательский класс, потребительский писательский класс, конфигурационный класс и основной класс.
Это должно работать так, как у main будет вся логика управления для всех остальных классов.
Я застрял в классе читателей.
Класс client создает объект client с подключением pika и открывает канал.
Я хочу использовать этот объект в своем классе чтения, где я хочу выполнять все операции, такие как объявление сообщений об использовании очереди обмена.
Но это говорит о том, что канал не открывается при попытке запустить класс читателя.
Я уже пытался проверить в другом посте, но у меня ничего не работает
class Consumer_client (object):
def __init__(self, user_id, password, url, port):
self.user_id = user_id
self.password = password
self.url = url
self.port = port
self.should_reconnect = False
self.connection = None
self.closing = False
self.channel = None
def connect(self):
credentials = pika.PlainCredentials(self.user_id, self.password)
parameters = pika.ConnectionParameters(self.url, self.port, '/', credentials)
return pika.SelectConnection(
parameters = parameters,
on_open_callback=self.on_connection_open, # These are the different arguments of select connection
on_open_error_callback=self.on_connection_open_error,
on_close_callback=self.on_connection_closed)
#The below reader class is there in another file
class Consumer_reader(Consumer_client):
EXCHANGE = 'Exchange'
EXCHANGE_TYPE = 'topic'
QUEUE = 'Queue'
connected = False
def __init__(self, exchange, queue, routing_key, user_id, password, url, port):
# Login details
self.user_id = user_id
self.password = password
self.url = url
self.port = port
self.exchange = exchange
self.queue = queue
self.routing_key = routing_key
self._channel = None
self.was_consuming = False
self.consuming = False
self._connection = None
self.prefetch_count = 500
self.cfg = super().__init__(user_id, password, url, port)
def run(self):
self._connection = super().connection
self._channel = super().channel
self.channel_open()
self._connection.ioloop.start()
def channel_open(self):
LOGGER.info('Channel opened')
#super().add_on_channel_close_callback()
self.setup_exchange()
Проблема в том, что я не могу заставить его работать класс Consumer_reader согласно соединению и каналу, созданному в классе Consumer_client
Класс читателя-потребителя должен уметь выполнять требуемые действия с помощью соединения, а канал создается клиентским классом-потребителем.