Asyncio не может подключиться к RabbitMQ - PullRequest
1 голос
/ 08 ноября 2019

Я изучаю следующую квантовую структуру, но всегда получаю ошибку соединения при подключении к RabbitMQ. после некоторого устранения неполадок я обнаружил, что модуль asynico / aioamqp всегда выдает ошибку: открытый поток был собран сборщиком мусора до установления сетевого подключения;вызовите stream.close () явно. при попытке подключения к серверу RabbitMQ RabbitMQ запущен и работает, и другой клиент может подключиться к нему без каких-либо ошибок.

Затем я следовал примеру hello world из aioamqp (https://github.com/Polyconseil/aioamqp/blob/master/examples/send.py), чтобы написать тестПрограмма, а затем воспроизвел ошибку.

import asyncio
import aioamqp


async def send():
    transport, protocol = await aioamqp.connect(host="127.0.0.1", port=5672, login="guest", password="guest", login_method="PLAIN")
    channel = await protocol.channel()

    await channel.queue_declare(queue_name='hello')

    await channel.basic_publish(
        payload='Hello World!',
        exchange_name='',
        routing_key='hello'
    )

    print(" [x] Sent 'Hello World!'")
    await protocol.close()
    transport.close()



asyncio.get_event_loop().run_until_complete(send())
(venv_380) appledeMBP:Market apple$ python hello.py

An open stream was garbage collected prior to establishing network connection; call "stream.close()" explicitly.

Traceback (most recent call last):
  File "hello.py", line 31, in <module>
    asyncio.get_event_loop().run_until_complete(send())
  File "/Users/apple/.pyenv/versions/3.8.0/lib/python3.8/asyncio/base_events.py", line 608, in run_until_complete
    return future.result()
  File "hello.py", line 14, in send
    transport, protocol = await aioamqp.connect(host="127.0.0.1", port=5672, login="guest", password="guest", login_method="PLAIN")
  File "/Users/apple/.virtualenvs/venv_380/lib/python3.8/site-packages/aioamqp/__init__.py", line 59, in connect
    sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
  File "/Users/apple/.pyenv/versions/3.8.0/lib/python3.8/asyncio/trsock.py", line 82, in setsockopt
    self._sock.setsockopt(*args, **kwargs)

OSError: [Errno 9] Bad file descriptor

1 Ответ

0 голосов
/ 08 ноября 2019

наконец я обнаружил, что это вызвано версией Python. проблема исчезла однажды с использованием 3,6 вместо 3,8, что приводит к проблеме соединения с aioamqp.connect ()

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