我正在将一些非常旧的Python代码从Python 2升级到Python 3。有一个简单的方法可以使用Pika检查rabbitmq连接。
from contextlib import closing
from pika import URLParameters, BaseConnection
def check_rabbitmq(self):
conn_params = URLParameters(self.config.rabbitmq_params['amqp.url'])
with closing(BaseConnection(conn_params)):
return True
但是,在 Python 3 中它会返回
TypeError: Can't instantiate abstract class BaseConnection with abstract method create_connection
我觉得我错过了一些明显的东西。
根据错误,
Can't instantiate abstract class BaseConnection with abstract method create_connection
。为此,我们可以做的是使用它的具体子类之一来建立连接,例如 BlockingConnection。使用下面是修改后的代码块:
def check_rabbitmq(self):
conn_params = pika.URLParameters(self.config.rabbitmq_params['amqp.url'])
with pika.BlockingConnection(conn_params) as connection:
return True
确保您也
import pika
位于顶部。