"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Use SQLite como corretor Celery no Django

Use SQLite como corretor Celery no Django

Publicado em 2024-08-18
Navegar:227

Use SQLite as a Celery broker in Django

Redis e RabbitMQ podem ser os corretores preferidos ao usar o Celery, mas quando você está desenvolvendo localmente, eles podem parecer um exagero. A documentação do Celery 5.4 menciona que você pode usar o SQLite como um corretor experimental para desenvolvimento local. No entanto, quando você navega para a página de backends e corretores do Celery, as únicas menções ao SQL são para o SQLAlchemy backend. Felizmente, a página observa que “esta seção não abrange back-ends e corretores”.

Este post mostrará como implementar um corretor SQLite (ou qualquer SQL!) para o Celery em um projeto Django. Esta postagem

não ensinará você a usar o Celery: verifique a documentação oficial do Celery para isso.

Antes de começarmos

Para os propósitos deste post, assumiremos que você já possui um projeto Django existente com o Celery instalado usando as etapas do guia oficial "Primeiros passos com Django" do Celery. Um backend do Celery não é

obrigatório, mas você pode querer seguir os passos do guia para instalar e configurar o django-celery-results. Se você não tiver certeza de qual é a diferença entre backends e corretores, confira meu artigo "Compreendendo tarefas, corretores, trabalhadores e backends no Celery."

Todos os links para a documentação fonte serão para as versões atuais do Django, Celery e SQLAlchemy no momento da publicação (julho de 2024), exceto quando explicitamente indicado o contrário. Se você estiver lendo isso em um futuro distante, as coisas podem ter mudado.

Configurando o SQL Broker

Enquanto o Celery gerencia tarefas e filas, ele delega a outra biblioteca chamada Kombu para troca de mensagens com o corretor. RabbitMQ e Redis são os transportes (corretores) mais completos do Kombu, mas também possui transportes virtuais para Amazon SQS, ZooKeeper e MongoDB.

Escondido nos cantos mais distantes da documentação do Kombu, há um modelo de transporte SQLAlchemy que suporta PostgreSQL, MySQL e SQLite. Era uma vez o corretor SQLAlchemy até documentado no site do Celery, mas desde então foi removido dos documentos nas versões mais recentes da biblioteca. No entanto, ainda funciona suficientemente bem para o desenvolvimento local.

Para usar um banco de dados sequencial como um corretor Celery em seu aplicativo Django, primeiro instale o SQLAlchemy:


pip instalar SQLAlchemy
pip install SQLAlchemy
No arquivo settings.py do seu projeto Django, você pode definir o backend do seu corretor usando a configuração CELERY_BROKER_URL:


# BASE_DIR é o diretório principal do seu projeto. CELERY_BROKER_URL = f"sqlalchemy sqlite:////{BASE_DIR}/broker.sqlite3"
pip install SQLAlchemy
O

URL do corretor SQLAlchemy consiste em 3 partes:

    A string sqlalchemy ou sqla (eles são intercambiáveis)
  1. Um sinal
  2. Uma string de conexão SQLAlchemy
As strings de conexão são diferentes para SQLite no Mac/Unix e Windows:


#MacOS/Unix CELERY_BROKER_URL = "sqla sqlite:////seu/projeto/caminho/broker.sqlite3" #Janelas CELERY_BROKER_URL = "sqla sqlite:///C:seu\\projeto\\caminho\\broker.sqlite3"
pip install SQLAlchemy
Você também pode usar o Postgres como um corretor Celery ou pode facilmente usar o MySQL como um corretor Celery:


# MySQL CELERY_BROKER_URL = "sqlalchemy mysql://scott:tiger@localhost/foo" #PostgreSQL CELERY_BROKER_URL = "sqla postgresql://scott:tiger@localhost/meudatabase" # Conexão PosgreSQL usando pg8000 CELERY_BROKER_URL = "sqla postgresql pg8000://scott:tiger@localhost/meudatabase"
pip install SQLAlchemy
Você pode precisar instalar outras bibliotecas para se conectar ao MySQL ou PostgreSQL, e qual biblioteca você instala pode afetar a string de conexão SQLAlchemy. Verifique os documentos de URL do banco de dados SQLAlchemy para obter mais detalhes.

Independentemente do banco de dados escolhido, você pode considerar armazenar a URL do corretor em uma variável de ambiente para facilitar a alteração em diferentes ambientes:


CELERY_BROKER_URL = os.getenv("CELERY_BROKER_URL")
pip install SQLAlchemy
Uma palavra de cautela

O transporte SQLAlchemy é provavelmente considerado experimental e, portanto, não seria destinado ao uso em produção. Pode ocorrer perda de dados ou as mensagens podem ser entregues várias vezes. Considere mudar para um corretor mais robusto listado na página Corretores e Backends do Celery.

Dito isto, pode ser bom para o desenvolvimento local, ou mesmo para pequenos projetos paralelos. Mas eu não ficaria chocado se a capacidade de usar SQLAlchemy como corretor desaparecesse no futuro.

Próximas etapas

Com o Celery em execução localmente, você pode começar a trabalhar em seu aplicativo baseado em fila. No entanto, você pode achar que a falta de recarga automática é um ponto de atrito. Se você deseja configurar o recarregamento automático do Celery em seu aplicativo Django, leia minha postagem "Recarregar automaticamente os trabalhadores do Celery com um comando personalizado do Django."

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/tylerlwsmith/use-sqlite-as-a-celery-broker-in-django-1jne?1 Se houver alguma violação, entre em contato com [email protected] para excluir isto
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3