Celeryé uma fila de trabalho distribuída que simplifica a gestão da distribuição de Tarefas.Desenvolvedores quebram conjuntos de dados em pequenos lotes para que o aipo processe em um trabalho conhecido como um trabalho.
você implanta um ou mais processos de trabalhadores que se conectam a uma fila de mensagens (corretor baseado em anAMQP ou SQS). Os clientes enviam trabalhos para o corretor de mensagens, ea fila está à espera de pedidos de emprego usingCelery. O corretor de mensagens, em seguida, distribui pedidos de emprego para os trabalhadores.Os trabalhadores esperam por trabalhos de aipo e executam as tarefas.Quando terminado, o trabalhador envia um resultado para outra fila para o processo do cliente.em aipo, os clientes e os trabalhadores não comunicam directamente entre si, mas através de filas de mensagens.Os clientes enviam mensagens usando tarefas no sistema, assim como um procedimento remoto inicia uma função. Os clientes não precisam entender o actualformat, mas anotar as funções e registrá-las com o framework:
@app.task def send_hello(x, y): return ‘Hello’ # overrides the broker from your configuration app = Celery('app_name', broker='...') app.tasks
Usando a ligação oficial em Python, criamos uma tarefa e registamo-la com o sistema. Você pode usar o métodoapply_async(function, args, kwargs,...)
para enviar a tarefa para a fila apropriada. O cliente chamaget
sobre o futuro devolvido porapply_async
para bloquear e recuperar a resposta ou utilizar o método estatal para iniciar uma chamada ao corretor para verificar o estado do pedido.
uma mensagem encaminhada para uma fila espera na fila até que alguém a consuma,e a mensagem é apagada da fila quando for reconhecida.
resulta em aipo
é possível acompanhar os estados de uma tarefa. O aipo pode também ser mais importante ou enviar os Estados Unidos. Assim, em vez de usar a função get, é possível empurrar os resultados para uma infra-estrutura diferente. Existem vários pacotes de resultados embutidos para escolher de entreincluídos, incluindo a alquimiaqlal, o databasesandrpc (RabbitMQ).
Por padrão, o aipo é configurado para não consumir resultados de Tarefas. Configurar a opção de configuraçãoresult_backend = 'rpc'
diz ao sistema para enviar uma resposta a uma fila única para consumo. Não é aconselhável utilizar a infra-estrutura ampq. Pode resultar numa fuga de memória.mais informações sobre os resultados podem ser encontradas aqui.o que são trocas de aipo?
o aipo funciona através do roteador de mensagens e dos padrões de assinante-em-edição.Os editores empurram as mensagens para uma troca que utiliza tanto o orwildcard de correspondência entre eles para uma ou mais filas de trabalho no corretor. O tipo de troca define como as mensagens são encaminhadas através da troca.Você configura os tipos de troca na configuração:
CELERY_QUEUES = { "my_queue”:{ "exchange”: "my_exchange”, "exchange_type”: "topic”, "binding_key”: "all_tasks.task_type” } } CELERY_DEFUALT_EXCHANGE=”my_exchange” CELERY_DEFAULT_EXCHANGE_TYPE=”direct” CELERY_DEFAULT_ROUTING_KEY=”all_tasks”
neste exemplo, você declara uma fila por omissão como a única fila conhecida com a troca por omissão, mas sobrepõe o tipo ao tópico com as teclas de routing.tipo task_type. A troca de tópicos permite que você use matching wildcard para que as tarefas enviadas para all_ tasks.* são ainda recebidos. Esta configuração pode ocorrer no mesmo módulo onde você inicia sua aplicação.
tipos de Intercâmbio
os tipos de troca padrão são diretos, tópicos, fanout e cabeçalhos. A edição de como as mensagens passam para os assinantes. As chaves de roteamento devem corresponder exactamente às trocas directas do ina. As trocas de Fanout enviam mensagens para todas as filas anexadas.Os tópicos permitem a correspondência com caracteres especiais. O cabeçalho troca apenas metadados de passagem.
Saiba mais sobre trocas e Chaves de roteamento de aboutRabbitMQ
quando devo usar aipo?
como um sistema de Fila de tarefas, o aipo funciona bem com processos de longa duração ou tarefas repetíveis pequenas trabalhando em lotes.Os tipos de problemas que o aipo Lida são tarefas assíncronas comuns. As imagens, a codificação de vídeo, a ETL, o envio de E-mail ou outros oleodutos beneficiam desta estrutura pré-construída que lida com grande parte do trabalho envolvido na sua construção.
quais são os benefícios do uso de aipo?
aipo trabalha com qualquer língua através do protocolo de mensagem padronizado.Além do lançamento oficial em Python, outras APIs estão em desenvolvimento para e.g.Java RustandNode.É possível criar um sistema centralizado usando qualquer linguagem com API anAMQP ou SQS.outros benefícios incluem a minimização da quantidade de código necessária para a distribuição de tarefas e a capacidade de agendar trabalhos periodicamente através do aquecimento urbano.O celestybeat é um programador que inicia tarefas a intervalos regulares.Um acompanhamento independente em tempo real para os trabalhadores aipo também está disponível através decelerymon.por que devo usar um corretor de mensagens na nuvem?
como um intermediário prebuilt, o aipo simplifica o desenvolvimento e gestão do gasoduto.A CloudAMQP elimina as necessidades administrativas da sua infra-estrutura com “Ready-madeclusters”.
“we are using CloudAMQP – RabbitMQ as a broker for our async tasks throughCelery. Estamos a usá-lo como o serviço async baseado em eventos. A CloudAMQP apoia o seu projecto através de um acompanhamento adequado e de uma elevada disponibilidade e de filas de corretores moduláveis.”Shivam Arora, Delhivery
você não precisa mais se preocupar em escalar seu sistema para atender a crescente demanda.As nossas instâncias vêm com a consola de gestão já em execução.
configurar RabbitMQ com CloudAMQP
CloudAMQP provisões o seu RabbitMQ instancesnearmente instantaneamente.Crie uma conta e forneça uma instância diretamente da interface de gestão web. Built-in Auto-scaling permite que seus corretores para trabalhar rapidamente.As bases da CloudAMQP custaram inteiramente ao poder deprimeirainstância subjacente, e você é capaz de escalar para cima e para baixo entre diferentes planos que foram necessários. Nosso nível Livre, pequeno lêmure, é uma excelente opção para testes.como posso usar o CloudAMQP como meu intermediário de mensagens de aipo?uma vez provisionado, o seu Corretor de CloudAMQP trabalha da mesma forma que o seu sistema de instalações. Tudo o que você precisa é um URL, nome de usuário e senha para estabelecer uma conexão com o corretor. Aipo lida com o resto:
app = Celery('app_name', broker='amqps://user:password@host:port/host’)print(app.conf.broker_url)
a estrutura de aipo armazena o URL na configuração. Uma vez que o aipo é gerido separadamente do corretor, obtém-se o mesmo grau de controlo que se exercesse todo o sistema nas instalações.posso gerir os meus trabalhadores de aipo na nuvem?enquanto a CloudAMQP fornece um intermediário de mensagens, também é possível implantar trabalhadores de escritório na AWS ou em outro serviço de nuvem. Os trabalhadores só precisam saber onde o corretor reside para se tornar parte do sistema. Aipo mantém aqueue para eventos e notificações sem um nó de registro comum.
devido ao uso de um corretor para a gestão do sistema, você pode executar suas tarefas de receptáculos do inDocker overKubernetes.Os contentores escalam automaticamente para se adaptarem às suas necessidades, enquanto o Kubernetes lhe permite definir políticas de escala e a Flower oferece capacidades de monitorização.Um recipiente oficial de aipo pode ser encontrado aqui:https://hub.docker.com/_/celery.Celery também é totalmente suportado onHeroku.o funcionamento dos seus clientes e trabalhadores na nuvem minimiza o custo de desenvolvimento e implantação de gasodutos.por que a CloudAMQP patrocina o projeto de aipo
temos muitos clientes executando aplicações que confiam no aipo,e estamos, portanto, ativa e mensalmente apoiando o desenvolvimento do projeto de aipo (AMQP). Por favor, avise-nos se houver alguma coisa no Celerite em que queira que nos concentremos mais.
visite a página do nosso plano para mais informações sobre como começar a implantar um conjunto RabbitMQ.Aconselhamo-lo igualmente a ler os nossos acordos recomendados para o aipo no CloudAMQP antes de iniciar um gasoduto de produção, bem como a apreciar o quadro de produção.gostou deste artigo? Não te esqueças de partilhá-lo com os outros. 😉