¿Qué es la cola redis?

¿Qué es la cola redis?
Redis es un almacén de datos de valor clave gratuito y de código abierto. Puede usar Redis como base de datos, un caché para otras bases de datos o un corredor de mensajes.

Esta guía implementará colas de tareas en Redis utilizando la Biblioteca de colas de Python Redis.

¿Qué es la cola redis??

Python Redis Queue o RQ es una biblioteca de Python simple pero poderosa que funciona con Redis para realizar preguntas de tareas y ejecución en segundo plano utilizando trabajadores. RQ es sencillo de usar para principiantes, pero sigue siendo muy poderoso para proyectos grandes.

La característica de las tareas de cola es esencial cuando se trabaja con funciones y código que tiende a bloquear la ejecución del programa. Un ejemplo de dicho código son las solicitudes de red.

Discutamos cómo podemos usar esta herramienta.

Configuración del medio ambiente

Antes de que podamos continuar, debe asegurarse de tener un buen ambiente. Para esto, necesitará una versión en ejecución del servidor Redis, Python 3 y PIP instalado.

Ilustraremos la instalación y la configuración en un sistema Ubuntu.

Comience actualizando los paquetes e instale el servidor Redis utilizando los comandos que se muestran a continuación:

actualización de sudo apt-get
sudo apt -get install redis -y

Una vez completado, inicie el servidor Redis usando el comando:

SUDO SERVICIO REDIS-SERVER Start

El siguiente paso es instalar Python3 y Pip en nuestro sistema. Siéntase libre de saltar a las siguientes secciones si tiene instalado Python.

sudo apt-get install python3.9 Python3 -PIP -y

A continuación, use PIP para instalar la biblioteca RQ.

sudo pip3 instalar rq

El comando anterior descargará e instalará la biblioteca RQ, y podemos comenzar a usarla.

Trabajando con la cola Redis

Para ilustrar el uso de la biblioteca RQ, utilizaremos una solicitud HTTP simple. En nuestro ejemplo, crearemos una función simple que realice una llamada API para ipify.org y obtenga nuestra dirección IP actual. La función hace una solicitud HTTP al servidor, lo que significa que es una función de bloqueo.

Crear un archivo Python simple y llamarlo IP.py. A continuación, ingrese el código como:

Solicitudes de importación
Def get_ip (URL):
respuesta = solicitudes.Obtener (URL).json ()
Respuesta de retorno
print (get_ip ("https: // API.ipificar.organizar?formato = json "))

El código anterior devolverá su dirección IP actual. Notará que la solicitud tarda unos segundos en resolverse y el servidor para responder. Esto significa que el resto del código está bloqueado hasta que este bloque se ejecuta.

Una respuesta de ejemplo del código anterior es como se muestra:

'ip': '185.156.46.41 '

Para evitar que la función bloquee la ejecución del programa, podemos pasarla a RQ, que puede procesarse como una tarea asíncrona.

Podemos hacer esto importando la biblioteca RQ, creando una cola simple y cola nuestra función de bloqueo.

Crear un archivo de python simple y llamarlo print_ip. Ingrese el código como se muestra:

De Redis Import Redis
de la cola de importación rq
Desde IP import get_ip
Q = Queue (Connection = Redis ())
resultado = Q.Enqueue (get_ip, "https: // API.ipificar.organizar?formato = json ")

Guarde y cierre el archivo.

Necesitamos ejecutar un trabajador en nuestro directorio de trabajo para procesar las tareas en cuanto en segundo plano.

Un trabajador es un proceso de Python que se ejecuta en segundo plano para ejecutar tareas de bloqueo en el código. RQ utiliza la funcionalidad de los trabajadores para realizar tareas eneadas.

Para ejecutar el código en el ejemplo anterior, abra una nueva ventana de terminal y navegue a su directorio de trabajo (donde se encuentra el código Python).

A continuación, ejecute el comando a continuación para iniciar el trabajador.

Trabajador de RQ-con scheduler

El comando anterior debe iniciar el trabajador como se muestra:

Si no necesita un programador, puede eliminar la opción -With -Scheduler.

Una vez que el trabajador se esté ejecutando, ejecute el código:

python3 print_ip.py

Ahora debería ver la información sobre las tareas impresas en la ventana del trabajador como se muestra:

Para obtener información precisa sobre la función que no es de bloqueo de esta función, puede intentar agregar un montón de declaraciones de impresión después de ella.

Notará que las declaraciones de impresión se imprimen inmediatamente después de ejecutar el archivo a pesar de que las solicitudes tardan un tiempo en procesar.

Conclusión

Esta guía lo guía a través de los conceptos básicos de trabajar con la cola Redis. Aunque utilizamos ejemplos simples en esta guía, con suerte le proporcionará un punto de partida para implementar opciones más complejas. Considere leer la documentación de RQ para obtener más información.