我正在嘗試使用pika連接到 AMQPS 服務(我沒有配置訪問權限或獲取證書的方法)。
這是代碼:
import pika
from urllib.parse import urlparse
import ssl
credentials = pika.PlainCredentials(username, password)
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.verify_mode = ssl.CERT_NONE
ssl_options=pika.SSLOptions(context)
params = pika.ConnectionParameters(
host=url.hostname,
port=url.port,
credentials=credentials,
ssl_options=ssl_options
)
connection = pika.BlockingConnection(params)
channel = connection.channel() # start a channel
每次我嘗試執行此操作時,它都會失敗:
ERROR:pika.adapters.utils.connection_workflow:AMQPConnector - reporting failure:
AMQPConnectorAMQPHandshakeError:
IncompatibleProtocolError: The protocol returned by the server is not supported:
('StreamLostError:
("Stream connection lost: SSLEOFError(8, \'EOF occurred in violation of protocol (_ssl.c:2633)\')",)',)
不幸的是,我不知道服務器回傳的是哪個協議。
qpid-proton與選項集一起使用sasl_enabled: True,它可以正常作業。
from proton import Message
from proton.utils import BlockingConnection
conn = BlockingConnection(
url,
password=password,
user=username,
sasl_enabled=True,
)
但是,我還沒有找到一種方法來做到這一點pika。
uj5u.com熱心網友回復:
我從閱讀問題和后來的評論中猜測遠程端點支持 AMQP 1.0,而 Pika 客戶端似乎只支持 0.9.1 草案 AMQP 規范,這將使回傳的錯誤變得合理。您需要使用能夠使用 ISO 規范 AMQP 1.0 標準的客戶端
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/490869.html
