Este guia implementará filas de tarefas em redis usando a biblioteca da fila Python Redis.
O que é Redis fila?
Python Redis Fila ou RQ é uma biblioteca Python simples, porém poderosa. O RQ é simples de usar para iniciantes, mas ainda é muito poderoso para grandes projetos.
A característica das tarefas de fila é essencial ao trabalhar com funções e código que tendem a bloquear a execução do programa. Um exemplo desse código são solicitações de rede.
Vamos discutir como podemos usar esta ferramenta.
Configuração do ambiente
Antes que possamos prosseguir, você precisa garantir que você tenha um bom ambiente. Para isso, você precisará de uma versão em execução do servidor Redis, Python 3 e Pip instalado.
Ilustraremos a instalação e a configuração em um sistema Ubuntu.
Comece atualizando os pacotes e instale o servidor Redis usando os comandos mostrados abaixo:
Atualização de sudo apt-get
sudo apt -get install redis -y
Depois de concluído, inicie o servidor Redis usando o comando:
SUDO Service Redis-Server Start
O próximo passo é instalar o Python3 e o PIP em nosso sistema. Sinta -se à vontade para pular para as próximas seções se você tiver o Python instalado.
sudo apt-get install python3.9 python3 -pip -y
Em seguida, use PIP para instalar a biblioteca RQ.
sudo pip3 install rq
O comando acima baixará e instalará a biblioteca RQ, e podemos começar a usá -la.
Trabalhando com a fila Redis
Para ilustrar o uso da biblioteca RQ, usaremos uma solicitação HTTP simples. Em nosso exemplo, criaremos uma função simples que faça uma chamada de API para ipificar.org e obtenha nosso endereço IP atual. A função faz uma solicitação HTTP ao servidor, o que significa que é uma função de bloqueio.
Crie um arquivo python simples e chame -o de IP.py. Em seguida, insira o código como:
solicitações de importaçãoO código acima retornará seu endereço IP atual. Você notará que a solicitação leva alguns segundos para resolver e o servidor para responder. Isso significa que o restante do código está bloqueado até que este bloco seja executado.
Um exemplo de resposta do código acima é como mostrado:
'ip': '185.156.46.41 'Para impedir que a função bloqueie a execução do programa, podemos passar para o RQ, que pode ser processado como uma tarefa assíncrona.
Podemos fazer isso importando a biblioteca RQ, criando uma fila simples e fila nossa função de bloqueio.
Crie um arquivo python simples e chame de impressão_ip. Digite o código como mostrado:
De Redis Import redisSalve e feche o arquivo.
Precisamos administrar um trabalhador em nosso diretório de trabalho para processar as tarefas envolvidas em segundo plano.
Um trabalhador é um processo python que é executado em segundo plano para executar tarefas de bloqueio no código. O RQ usa a funcionalidade dos trabalhadores para executar tarefas envolvidas.
Para executar o código no exemplo anterior, abra uma nova janela do terminal e navegue até o seu diretório de trabalho (onde o código Python está localizado).
Em seguida, execute o comando abaixo para iniciar o trabalhador.
RQ Worker-com schedulerO comando acima deve iniciar o trabalhador como mostrado:
Se você não precisar de um agendador, poderá remover a opção -with -scheduler.
Quando o trabalhador estiver em execução, execute o código:
python3 print_ip.pyAgora você deve ver as informações sobre as tarefas impressas na janela do trabalhador, como mostrado:
Para obter informações precisas sobre o recurso não bloqueador dessa função, você pode tentar adicionar um monte de declarações de impressão depois dela.
Você notará que as declarações de impressão são impressas imediatamente após a execução do arquivo, apesar das solicitações demorar um pouco para processar.
Conclusão
Este guia orienta você pelo básico de trabalhar com a fila Redis. Embora usemos exemplos simples neste guia, esperamos que ele forneça um ponto de partida para implementar opções mais complexas. Considere ler a documentação do RQ para saber mais.