Conectando a um Broker usando SSL#

Novo na versão 0.20.2.

Para que possamos conectar em um Broker usando ssl precisamos criar um SSLContext e passar esse objeto para o nosso objeto AMQPConnection.

Esse contexto é criado usando o módulo ssl da stdlib do Python mesmo. Uma forma simples de criar um contexto é usar:

import ssl

ctx = ssl.create_default_context()

Esse contexto deve ser passado ao Objeto AMQPConnection, dessa forma:

from asyncworker import App
from asyncworker.connections import AMQPConnection
import ssl


amqp_conn = AMQPConnection(host="127.0.0.1",
              user="guest",
              password="guest",
              prefetch_count=256,
              ssl=ssl.create_default_context()
            )
app = App(connections=[amqp_conn])

@app.amqp.consume(["asgard/counts", "asgard/counts/errors"],
           vhost="fluentd")
async def drain_handler(message):
    print(message)

Esse código consegue se conectar a um broker que usa ssl. Nesse caso o asyncworker vai conferir so certificados do servidor. Caso você esteja se conectando a um broker com certificados auto-assinados, você deverá carregar os arquivos de certificado que sejam capazes de validar a conexão com esse broker.

from asyncworker import App
from asyncworker.connections import AMQPConnection
import ssl


ctx = ssl.create_default_context()
context.load_verify_locations('path/to/cabundle.pem')

amqp_conn = AMQPConnection(host="127.0.0.1",
              user="guest",
              password="guest",
              prefetch_count=256,
              ssl=ctx,
            )
app = App(connections=[amqp_conn])