鼠兔 SelectConnection 适配器 'Unresolved attribute reference'
Pika SelectConnection adapter 'Unresolved attribute reference'
我在使用 pika.SelectConnection 适配器连接到 RabbitMQ 时遇到问题。我正在使用 Pika 1.1.0 和 Python 3.7.9,开发使用 PyCharm 社区。
下面是我的代码快照,显示了我如何创建连接。
import pika
def on_done():
connect.channel()
print("Open Callback")
if __name__ == '__main__':
account = "user"
password = "password"
server = "172.17.0.5"
credentials = pika.PlainCredentials(account, password)
parameters = pika.ConnectionParameters(host=server, port=15672, credentials=credentials, socket_timeout=10)
connect = pika.SelectConnection(parameters, on_open_callback=on_done)
connect.ioloop.start()
RabbitMQ 运行ning,我已经使用 pika.BlockingConnection 适配器检查了连接和消息传递。
我的 IDE (PyCharm) 将 start() 函数作为 "Unresolved attribute reference 'start' for class 'object' “。当我用运行这段代码时,没有错误。在管理网页上,我没有看到连接已打开。
有人遇到过类似的问题吗?我的 IDE 有问题吗?
感谢您的回答。
刚刚有同样的警告,但在 AsyncPublisher-Example 中,我也想摆脱它。
问题在于 IOLoop 并未由 pika 专门定义,尽管它应该定义。
如果你使用鼠兔,你正在寻找的 IOLoop 类型是:
pika.adapters.select_connection.IOLoop
在你的情况下,最简单的方法是投射你的 IOLoop,然后使用这个开始。
io_loop = cast(pika.adapters.select_connection.IOLoop, connect.ioloop)
io_loop.start()
对于更复杂的 AsyncPublisher 我做了几乎相同的事情:
def __init__(self, amqp_url: str, queues: List[str], interval: float):
self._ioloop: Optional[pika.adapters.select_connection.IOLoop] = None
连接建立后:
def run(self):
"""Run the example code by connecting and then starting the IOLoop.
"""
while not self._stopping:
self._connection = None
self._deliveries = []
self._ack = 0
self._not_ack = 0
self._message_number = 0
try:
self._connection = self.connect()
self._ioloop = cast(pika.adapters.select_connection.IOLoop, self._connection.ioloop)
self._ioloop.start()
我在使用 pika.SelectConnection 适配器连接到 RabbitMQ 时遇到问题。我正在使用 Pika 1.1.0 和 Python 3.7.9,开发使用 PyCharm 社区。 下面是我的代码快照,显示了我如何创建连接。
import pika
def on_done():
connect.channel()
print("Open Callback")
if __name__ == '__main__':
account = "user"
password = "password"
server = "172.17.0.5"
credentials = pika.PlainCredentials(account, password)
parameters = pika.ConnectionParameters(host=server, port=15672, credentials=credentials, socket_timeout=10)
connect = pika.SelectConnection(parameters, on_open_callback=on_done)
connect.ioloop.start()
RabbitMQ 运行ning,我已经使用 pika.BlockingConnection 适配器检查了连接和消息传递。
我的 IDE (PyCharm) 将 start() 函数作为 "Unresolved attribute reference 'start' for class 'object' “。当我用运行这段代码时,没有错误。在管理网页上,我没有看到连接已打开。
有人遇到过类似的问题吗?我的 IDE 有问题吗?
感谢您的回答。
刚刚有同样的警告,但在 AsyncPublisher-Example 中,我也想摆脱它。
问题在于 IOLoop 并未由 pika 专门定义,尽管它应该定义。
如果你使用鼠兔,你正在寻找的 IOLoop 类型是:
pika.adapters.select_connection.IOLoop
在你的情况下,最简单的方法是投射你的 IOLoop,然后使用这个开始。
io_loop = cast(pika.adapters.select_connection.IOLoop, connect.ioloop)
io_loop.start()
对于更复杂的 AsyncPublisher 我做了几乎相同的事情:
def __init__(self, amqp_url: str, queues: List[str], interval: float):
self._ioloop: Optional[pika.adapters.select_connection.IOLoop] = None
连接建立后:
def run(self):
"""Run the example code by connecting and then starting the IOLoop.
"""
while not self._stopping:
self._connection = None
self._deliveries = []
self._ack = 0
self._not_ack = 0
self._message_number = 0
try:
self._connection = self.connect()
self._ioloop = cast(pika.adapters.select_connection.IOLoop, self._connection.ioloop)
self._ioloop.start()