Qu'est-ce que la file d'attente Redis

Qu'est-ce que la file d'attente Redis
Redis est un magasin de données de valeur clé en mémoire gratuite et open source. Vous pouvez utiliser Redis comme base de données, un cache pour d'autres bases de données ou un courtier de messages.

Ce guide implémentera les files d'attente de tâches dans Redis à l'aide de la bibliothèque Python Redis queue.

Qu'est-ce que la file d'attente Redis?

La file d'attente ou RQ de Python Redis est une bibliothèque Python simple mais puissante qui fonctionne avec Redis pour effectuer des questions et exécutions de tâches en arrière-plan à l'aide des travailleurs. RQ est simple à utiliser pour les débutants mais toujours très puissant pour les grands projets.

La fonctionnalité des tâches de mise en file d'attente est essentielle lorsque vous travaillez avec des fonctions et du code qui ont tendance à bloquer l'exécution du programme. Un exemple de ce code est les demandes de réseau.

Laissez-nous discuter de la façon dont nous pouvons utiliser cet outil.

Configuration de l'environnement

Avant de pouvoir continuer, vous devez vous assurer d'avoir un bon environnement. Pour cela, vous aurez besoin d'une version en cours d'exécution du serveur Redis, Python 3 et PIP installé.

Nous illustrons l'installation et la configuration sur un système Ubuntu.

Commencez par mettre à jour les packages et installez Redis Server à l'aide des commandes ci-dessous:

Mise à jour Sudo apt-get
sudo apt-get install redis -y

Une fois terminé, démarrez le serveur Redis à l'aide de la commande:

SUDO Service Redis-Server Start

L'étape suivante consiste à installer Python3 et Pip sur notre système. N'hésitez pas à passer aux sections suivantes si vous avez installé Python.

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

Ensuite, utilisez PIP pour installer la bibliothèque RQ.

sudo pip3 installer rq

La commande ci-dessus téléchargera et installera la bibliothèque RQ, et nous pouvons commencer à l'utiliser.

Travailler avec la file d'attente Redis

Pour illustrer l'utilisation de la bibliothèque RQ, nous utiliserons une simple demande HTTP. Dans notre exemple, nous créerons une fonction simple qui passe un appel API à ipify.org et obtenez notre adresse IP actuelle. La fonction fait une demande HTTP au serveur, ce qui signifie qu'il s'agit d'une fonction de blocage.

Créez un fichier python simple et appelez-le ip.py. Ensuite, entrez le code comme:

Demandes d'importation
def get_ip (URL):
réponse = demandes.obtenir (URL).JSON ()
Réponse de retour
print (get_ip ("https: // api.ipify.org?format = json "))

Le code ci-dessus renvoie votre adresse IP actuelle. Vous remarquerez que la demande prend quelques secondes à résoudre et que le serveur répond. Cela signifie que le reste du code est bloqué jusqu'à ce que ce bloc soit exécuté.

Un exemple de réponse du code ci-dessus est comme indiqué:

'ip': '185.156.46.41 '

Pour empêcher la fonction de bloquer l'exécution du programme, nous pouvons le transmettre à RQ, qui peut être traité comme une tâche asynchrone.

Nous pouvons le faire en important la bibliothèque RQ, en créant une file d'attente simple et en faisant la file d'attente notre fonction de blocage.

Créez un fichier python simple et appelez-le print_ip. Entrez le code comme indiqué:

à partir de redis import redis
à partir de la file d'attente d'importation RQ
à partir d'IP import get_ip
q = file d'attente (connexion = redis ())
résultat = q.ENQUEUe (get_ip, "https: // api.ipify.org?format = json ")

Enregistrez et fermez le fichier.

Nous devons gérer un travailleur dans notre répertoire de travail pour traiter les tâches en arrière-plan en arrière-plan.

Un travailleur est un processus Python qui s'exécute en arrière-plan pour exécuter des tâches de blocage dans le code. RQ utilise les fonctionnalités des travailleurs pour effectuer des tâches en file d'attente.

Pour exécuter le code dans l'exemple précédent, ouvrez une nouvelle fenêtre de terminal et accédez à votre répertoire de travail (où se trouve le code Python).

Ensuite, exécutez la commande ci-dessous pour démarrer le travailleur.

travailleur RQ - avec-scheduler

La commande ci-dessus doit démarrer le travailleur comme indiqué:

Si vous n'avez pas besoin d'un planificateur, vous pouvez supprimer l'option-with-scheduler.

Une fois le travailleur en cours d'exécution, exécutez le code:

Python3 print_ip.py

Vous devriez maintenant voir les informations sur les tâches imprimées dans la fenêtre du travailleur comme indiqué:

Pour obtenir des informations précises sur la fonctionnalité non bloquante de cette fonction, vous pouvez essayer d'ajouter un tas de déclarations d'impression après.

Vous remarquerez que les instructions d'impression sont imprimées immédiatement après l'exécution du fichier malgré les demandes de traitement un certain temps.

Conclusion

Ce guide vous guide à travers les bases de travailler avec la file d'attente Redis. Bien que nous utilisions des exemples simples dans ce guide, il vous espérons vous fournir un point de départ pour implémenter des options plus complexes. Envisagez de lire la documentation RQ pour en savoir plus.